Основы 1С | Учебник по 1С | mista.ru

Информационные системы
Основы 1С

1С:Предприятие

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Основы 1С

Конфигуратор

Все начинается с запуска Конфигуратора. Программы для 1С:Предприятие называются "конфигурациями" и создаются они в специальном режиме для разработчика "Конфигуратор". Обычные пользователи работают в режиме "Предприятие".

Объекты, свойства и методы

Самое главное понятие 1С -- это "объект". Объект -- это элемент реального мира. Объектом может быть все что угодно: компьютер, облако, кошка... Но нас интересуют только те объекты, которые имеются в офисной деятельности предприятия: документы, отчеты, справочники... Программа для 1С представляется как совокупность объектов, взаимосвязанных между собой, т.е. конфигурация объектов. Например, документ "Приказ о приеме на работу", справочник "Сотрудники", отчет "Сотрудники, принятые за период".

У объектов имеются некоторые атрибуты (свойства, реквизиты). Например, сотрудник имеет фамилию, имя, отчество, оклад, табельный номер. Приказ о приеме имеет номер и дату. Набор свойств объекта задается разработчиком.

Также объекты имеют определенные методы (процедуры и функции). Например, вы можете выбрать всех сотрудников с помощью метода справочника ВыбратьЭлементы(), или можно сохранить документ методом Записать().

Встроенный язык

Поведение объектов конфигурации задается на встроенном языке. Программист может писать на встроенном языке 1С свои собственные модули, состоящие из процедур и функций. Встроенный язык позволяет работать со справочниками, документами и другими объектами 1С. Можно, например, с помощью методов объектов выбрать все элементы справочника Сотрудники для вывода в отчет, или создать и сохранить любой документ.

Модули, процедуры и функции

Вся конфигурация, как вы уже наверное заметили, состоит из модулей. Это могут быть модули документов или модули отчетов или другие модули. Модули состоят из процедур и функций. Процедура -- это небольшая программа для выполнения определенной задачи. Функция отличается от процедуры, только тем, что имеет результат. Говорят, "функция возвращает результат". Например, модуль "Приказа о приеме на работу" может иметь следующие процедуры ПроверитьПравильность( ) и НапечататьПриказ( ).

Глобальный модуль

В системе 1С есть так называемый Глобальный модуль.Он относится к конфигурации в целом. Глобальный модуль нужен для того, что писать процедуры и функции, доступные в любом месте программы (в любом другом модуле). Для этого необходимо просто указать ключевое слово Экспорт. Также можно создать глобальные переменные, которыми можно будет пользоваться в любом месте программы. Но чем меньше будет таких глобальных переменных, тем лучше, так как модули получаются более независимыми друг от друга, что снижает количество ошибок в программе и облегчает отладку.
© Волшебник Станислав,
www.mista.ru, 1997-2003
1C:TOP-100
Наверх ^


Бухгалтерские итоги | Учебник по 1С | mista.ru

Бухгалтерские итоги

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Бухгалтерия / Бухгалтерские итоги

Механизм бухгалтерских итогов, поддерживаемый компонентой «Бухгалтерский учет» системы 1С:Предприятие релизует хранение накопленных итогов для обеспечения быстрого обращения к ним при составлении отчетов и выполнения различных вычислений.

Хранение итогов поддерживается системой с детализацией до месяца. Кроме того, хранятся не все возможные итоги, а те, обращение к которым выполняется наиболее часто — это остатки и обороты по счетам с детализацией по объектам аналитики (субконто), а также обороты между счетам (без учета аналитики). Такие итоги называются основными. Обращение к этим итогам выполняется системой непосредственно. Для получения других итогов (с детализацией меньше месяца, с получением оборотов между различными объектами аналитики, а также сложных выборок) требуется выполнение предварительных действий — временного расчета или запроса.

Объект «БухгалтерскиеИтоги» может работать в 3-х различных режимах:

  • работа с основными итогами;
  • работа с временными итогами;
  • работа в режиме запроса;

При создании объекта он работает в режиме работы с основными итогами. Переключение его в остальные режимы выполняется методами Рассчитать и ВыполнитьЗапрос. В зависимости от режима изменяется состав и использование атрибутов и методов объекта.

Общие свойства

Работа объекта «БухгалтерскиеИтоги» во всех режимах имеет некоторые общие особенности. Значение типа «Счет» в параметры методов объекта может передаваться в виде строки, содержащей код счета. При ведении учета по нескольким планам счетов или с использованием разделителя учета на получение итогов в различных режимах запроса влияют установки методов ИспользоватьПланСчетов и ИспользоватьРазделительУчета.

ИспользоватьПланСчетов(<ПланСчетов>)

Метод ИспользоватьПланСчетов задает план счетов для метода получения итогов и ВыполнитьЗапрос для тех случаев, когда конкретный счет не указан или задается строкой символов.

Если план счетов не установлен функцией ИспользоватьПланСчетов, будет использоваться основной план счетов, заданный в метаданных.

Пример.
БухИтоги.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);

ИспользоватьРазделительУчета(<РазделительУчета>)

Метод ИспользоватьРазделительУчета задает значения разделителя учета для методов получения итогов и ВыполнитьЗапрос. Применение данного метода имеет смысл только если используется разделителель учета.

Пример.
БухИтоги.ИспользоватьРазделительУчета (Константа.ОснФирма);

Основные бухгалтерские итоги

Основными итогами называются остатки и обороты по счетам и объектам аналитического учета, а также обороты между счетами за любой рассчитанный период с детализацией до месяца.

В пункте меню «Управление бухгалтерскими итогами» устанавливается последний рассчитанный период. В режиме работы с основными итогами обращение может выполняться только к итогам по рассчитанный период включительно. В этом режиме работают два вида методов — получение остатков и оборотов, а также установка периода за который выдаются итоги. По умолчанию используется период, выбранный пользователем интерактивно через меню Сервис => Параметры => Бухгалтерские итоги.

Остатки и обороты по счетам

Метод | Описание
СНД | дебетовое сальдо по счету на начало периода
СНК | кредитовое сальдо по счету на начало периода
СКД | дебетовое сальдо по счету на конец периода
СКК | кредитовое сальдо по счету на конец периода
ДО | дебетовый оборот по счету за период
КО | кредитовый оборот по счету за период

Синтаксис (у всех одинаковый): СНД (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...)

Параметр
Описание
<Счет> | Значение типа «Счет» — счет расчета итогов. Может использоваться строка — код счета.
<ТипСуммы>

Необязательный параметр. Число или строка — тип возвращаемой суммы. Может принимать одно из следующих значений:

  • 1 ("С") — сумма;
  • 2 ("В") — валютная сумма;
  • 3 ("К") — количество.

Если параметр не указан, метод возвращает сумму.

<Валюта> | Необязательный параметр. Значение типа «Справочник.Валюты». Если параметр не указан итоги выдаются без учета валюты. Если указана валюта, то данные выдаются по конкретной валюте. Валютная сумма может выдаваться только по конкретной валюте.
<Субконто1>
<Субконто2>
...… 		Необязательный параметр. Значения субконто. Их количество зависит от настройки субконто для данного счета. Если параметры не указаны, итоги выдаются без учета аналитики.

Пример

БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги);

ОстатокНаСчетеНаНачалоПериода = БухИтоги.СНД("51");
ОстатокНаСчетеНаКонецПериода = БухИтоги.СКД("51");

ПриходГвоздейНаСкладЗаПериод = БухИтоги.ДО("10.1",3,,МатериалГвозди,ЦентрСклад);

Обороты между счетами

ОБ(<СчетДеб>, <СчетКред>, <ТипСуммы>, <Валюта>)

Метод возвращает оборот с дебета счета <СчетДеб> в кредит счета <СчетКред>.

Пример

КассаБанк = БухИтоги.ОБ("50", "51");

Развернутое сальдо по субсчетам

Функции СНДР, СНКР, СКДР, СККР предназначены для расчета остатков по счетам, у которых учет ведется на субсчетах. Каждая функция из этой группы возвращает остаток как сумму соответствующих остатков (дебетовых или кредитовых) всех субсчетов указанного счета. При этом учитываются остатки по субсчетам являющихся собственно счетами, а не группами.

Метод | Описание
СНДР | дебетовое развернутое сальдо по субсчетам на начало периода
СНКР | кредитовое развернутое сальдо по субсчетам на начало периода
СКДР | дебетовое развернутое сальдо по субсчетам на конец периода
СККР | кредитовое развернутое сальдо по субсчетам на конец периода

Пример

* Для помещения в бухгалтерский баланс вычисляется развернутое сальдо по 68 счету, учет на котором ведется на субсчетах. Дебетовая составляющая должна попасть в актив баланса, кредитовая составляющая — в пассив.

БухИтоги = СоздатьОбъект(
              "БухгалтерскиеИтоги);
ДебСальдоНаНач = БухИтоги.СНДР("68");
ДебСальдоНаКон = БухИтоги.СКДР("68");
КрСальдоНаНач = БухИтоги.СНКР("68");
КрСальдоНаКон = БухИтоги.СККР("68");

Развернутое сальдо по субконто

Функции СНДРС, СНКРС, СКДРС, СККРС предназначены для расчета остатков по счетам, у которых ведется аналитический учет по субконто. Каждая функция из этой группы возвращает остаток как сумму соответствующих остатков (дебетовых или кредитовых) по всем объектам аналитического учета.

Если аналитический учет по счету ведется по двум и более субконто, то для развернутого сальдо параметр <ТипФильтра> устанавливает участие данног вида субконто в получении развернутого сальдо. В зависимости от значения этого параметра данное субконто может участвовать в «развороте» остатка, или накладывать дополнительное ограничение (отбирать) на анализируемые остатки, или никак не влиять на результат функции.

Метод | Описание
СНДРС | дебетовое развернутое сальдо по субконто на начало периода
СНКРС | кредитовое развернутое сальдо по субконто на начало периода
СКДРС | дебетовое развернутое сальдо по субконто на конец периода
СККРС | кредитовое развернутое сальдо по субконто на конец периода

Синтаксис (у всех одинаковый):

СНДРС(<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>, <ТипФильтра1>, <Субконто2>, <ТипФильтра2>...)

<ТипФильтра>. Необязательный параметр. Тип использования субконто. (Строка или число).

  • "*" (1) — Разворачивать по данному субконто.
  • "!" (2) — Отбирать по данному субконто.
  • " " (3) — Не учитывать данное субконто.

Значения по умолчанию: "*" (1) — для первого субконто, " " (3) — для остальных субконто.

Пример

//Получим развернутое сальдо дебетовое на начало периода по счету 60,
// учет ведется по субконто Организации.

СР60 = БухИтоги.СНДРС("60");

//Получим развернутое сальдо дебетовое на начало периода по счету 10
//конкретному складу в разрезе материалов, учет ведется по субконто «Материалы» и «Склады».

СР10 = БухИтоги.СНДРС("10", 1, , , "*", ВыбСклад, "!");

Установка периода итогов

Метод | Описание
ПериодД | Устанавливает произвольный период в качестве периода расчета итогов. Синтаксис: ПериодД(<ДатаНачалаПериода>, <ДатаКонцаПериода>)
ПериодКВ | Устанавливает квартал в качестве периода расчета итогов. Синтаксис: ПериодКВ(<Дата>|<НомерКвартала>, <Год>)
ПериодКВН | Устанавливает в качестве периода расчета итогов период с начала года до конца указанного квартала. Синтаксис: ПериодКВН(<Дата>|<НомерКвартала>, <Год>)
ПериодМ | Устанавливает в качестве периода расчета итогов месяц. ПериодМ(<Дата>|<НомерМесяца>, <Год>)
ПериодМНК | Устанавливает в качестве периода расчета итогов период с начала квартала до конца указанного месяца. ПериодМНК(<Дата>|<НомерМесяца>, <Год>)
ПериодМНГ | Устанавливает в качестве периода расчета итогов период с начала года до конца указанного месяца. ПериодМНГ(<Дата>|<НомерМесяца>, <Год>)
НачПериода | Возвращает начальную дату установленного в данный момент периода основных итогов.
КонПериода | Выдает конечную дату установленного в данный момент периода основных итогов.

Другие методы

Метод ОсновныеИтоги переводит объект в режим работы с основными итогами. Вызов этого метода имеет смысл тогда, когда был выполнен расчет временных итогов или запрос, и нужно вернуть объект к работе с основными итогами. При этом результаты запроса или расчета временных итогов теряются.

Для переключения в режим работы с временными итогами следует выполнить метод Рассчитать. После этого объект позволяет получать остатки и обороты по счетам за произвольный период, заданный при вызове метода Рассчитать.

Для получения временных итогов используются те же методы, что и для получения основных итогов (СНД, СНК , СКД , СКК, ДО, КО, ОБ и другие). Параметры метода Рассчитать определяют итоги, которые будут доступны для получения этими методами.

Временный расчет

Метод Рассчитать

Синтаксис
Рассчитать(<НачалоПериода>, <КонецПериода> , <ФильтрПоСчетам>, <ТолькоСинтетика> , <ПланСчетов>, <РазделительУчета>)

Параметр
Описание
<НачалоПериода>

Необязательный параметр. Выражение типа дата, документ или позиция документа начала периода расчета временных итогов. Если этот параметр не указан, будут вычисляться конечные сальдо на момент, указанный в параметре <КонецПериода>.
<КонецПериода>

Необязательный параметр. Выражение типа дата, документ или позиция документа конца периода расчета временных итогов. Если этот параметр не указан, будут вычисляться начальные сальдо на момент, указанный в параметре <НачалоПериода>.

Если из двух параметров периода задан только параметр начала периода, метод Рассчитать вычислит начальные остатки — без оборотов. Наоборот, если задан параметр конца периода, будут вычисленные конечные остатки.
<ФильтрП, рСчетам> Необязательный параметр. Счета, для которых будет выполняться временный расчет итогов. Задается значением типа «Счет» или объектом типа «СписокЗначений», содержащим значения типа «Счет», либо строкой содержащей список кодов счетов, разделенных символом ", " или ";".

<ТолькоСинтетика> Необязательный параметр:

1 — рассчитывать сальдо только по счетам;
0 — или не указан — рассчитывать сальдо по счетам и по субконто.

Установка параметра <ТолькоСинтетика> в 1 задает выполнение расчета итогов только по счетам, без субконто. В этом случае функции для получения развернутого сальдо по субконто СНДРС, СКДРС, СНКРС, СККРС для счетов, по которым ведется аналитический учет по субконто будут возвращать 0, даже если реально в информационной базе есть остатки по этим счетам.

Если параметр <ТолькоСинтетика> не указан или равен 0, временный расчет итогов будет выполнен и по счетам, и по субконто.
<ПланСчетов> Необязательный параметр. Ограничение расчета одним планом счетов.
<РазделительУчета> Необязательный параметр. Значение разделителя учета. Ограничение расчета одним значением разделителя учета.

Метод Актуальность

Устанавливает или сбрасывает признак актуальности временных итогов.

Данный метод позволяет организовать поддержку временного расчета итогов в актуальном состоянии. При установке объекту «БухгалтерскиеИтоги» признака поддержки в актуальном состоянии, в нем будут отражаться все изменения в итогах, выполняемые операциями. При этом данный актуальный объект «БухгалтерскиеИтоги» смогут автоматически использовать временные расчеты и запросы других объектов «БухгалтерскиеИтоги» с аналогичными фильтрами, что позволяет оптимизировать время расчета.

Данную возможность следует использовать только в специальных случаях, например, для оптимизации больших регламентных расчетов. Данная возможность может применяться только при работе программы в монопольном режиме или, если не в монопольном режиме, то только при проведении документа.

Синтаксис: Актуальность(<Флаг>)

<Флаг>: 1 — поддерживать временный расчет в актуальном состоянии; 0 — не поддерживать;


Операции и проводки | Учебник по 1С | mista.ru

Операции и проводки

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Бухгалтерия / Операции и проводки

Создание операции и проводок
 Простой перебор
 Перебор с фильтром
 Перебор с корр. счетом
Фильтр по субконто
 Графа отбора
Поиск операции
 Удаление операции и проводок
Другие полезности

Операция обычно содержит одну или несколько проводок. Именно проводки влияют на бухгалтерские итоги. Каждая проводка принадлежит одной и только одной операции. Следует помнить, что любая операция вводится на основании документа. Даже операции, введенные вручную, привязываются к документу специального типа "Операция".

Работа с операциями похожа на работу с документами. Проводки можно представить, как табличную часть операции, по аналогии с табличной частью документа. С точки зрения пользователя все операции и проводки хранятся в журнале операций и связанном с ним журнале проводок.

Создание операции и проводок

При проведении документа, имеющего отношение к бухгалтерскому учету, процедура проведения должна заполнить атрибуты операции данного документа и сформировать проводки.

Процедура ОбработкаПроведения()

 //заполнение
                атрибутов операции
Операция.СуммаОперации = Итог("Сумма");
Операция.Содержание = "Поступление материалов";
Операция.Журнал = "МТ"; //доп. реквизит операции

//для каждой строки документа сделаем проводку
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

ПривязыватьСтроку(1);
                  //проводки будут содержать номер строки документа

//создание проводки и заполнение атрибутов проводки
Операция.НоваяПроводка();

Операция.Дебет.Счет = СчетПоКоду("10.1");
Операция.Дебет.Склады = Склад; //1-й вариант обращения к субконто
Операция.Дебет.Субконто(ВидыСубконто.Материалы,Материал); //2-й
                  вариант
Операция.Количество = Количество;

Операция.Кредит.Счет = СчетПоКоду("51");
Операция.Кредит.Субконто(1,РасчетныйСчет); //3-й вариант

Операция.Сумма = Сумма;

//у нас счет 10.1 валютный, поэтому
Операция.ВалСумма = Сумма*Курс;
Операция.Валюта = Валюта;

Операция.Филиал = Филиал; //разделитель учета (доп. реквизит
                  проводки)

КонецЦикла;
Операция.Записать();

КонецПроцедуры

Итак, у операции есть следующие атрибуты:

Атрибут операции
Описание
ДатаОперации | Атрибут ДатаОперации содержит дату бухгалтерской операции. Так как каждая бухгалтерская операция принадлежит документу (причем только одному, а операция введенная вручную также принадлежит специальному документу «Операция»), значение атрибута совпадает со значением атрибута ДатаДок документа, которому принедлежит операция.
Содержание | Атрибут Содержание служит для обращения к содержанию операции. Содержание операции представляет собой произвольную символьную строку. Например, "Поступление материалов".
СуммаОперации | Атрибут СуммаОперации служит для обращения к сумме операции. Сумма операции является положительным или отрицательным числом. Сумма операции предназначена лишь для иллюстрирования денежного выражения операции и не влияет на бухгалтерские итоги.
Документ Атрибут Документ является атрибутом «только для чтения», то есть ему нельзя присваивать никакого значения. Он служит для обращения к документу, котрому принадлежит операция. Так, как любая операция принадлежит документу (операция введенная «вручную» принадлежит документу специального вида «Операция») доступ к некоторым свойствам операции, например, номеру возможен только посредством обращения к атрибуту Документ.

Атрибут Документ предназначен только для доступа к атрибутам и реквизитам документа, которому принадлежит операция. Для получения значения типа «Документ» используется метод ТекущийДокумент.
Сумма Атрибут Сумма служит для обращения к сумме выбранной проводки (корреспонденции) операции.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Операции» и «Журнал проводок» текущая проводка определяется положением курсора.
Валюта | Атрибут Валюта служит для обращения к валюте выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется валютный учет.
ВалСумма | Атрибут ВалСумма служит для обращения к сумме в валюте выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется валютный учет.
Количество | Атрибут Количество служит для обращению к количеству выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется количественный учет.
Дебет
Дебет.Счет
Дебет.Субконто

Атрибут Дебет служит для обращения к дебетовой части текущей проводки (корреспонденции) операции. Данный атрибут возвращает агрегатный объект специального типа «Дебет», который используется только для доступа к данным дебетовой части конкретной проводки (корреспонденции) операции и не используется отдельно.

Атрибут Дебет.Счет служит для доступа к счету дебета/кредита проводки или корреспонденции операции.

Атрибут Дебет.Субконто служит для доступа к значению субконто дебета проводки (корреспонденции) операции. В конкретном случае обращение к субконто для дебета определяется счетом дебета, то есть заданными для него видами субконто по которым ведется аналитический учет по этому счету.

Разные варианты обращения к субконто см. выше в примере.
Кредит
Кредит.Счет
Кредит.Субконто
Доступ к кредитовой части текущей проводки. Работает аналогично атрибуту Дебет.
<реквизит_операции> | Помимо реквизитов операции, задаваемых на системном уровне (СуммаОперации, Содержание), в процессе конфигурирования для операции можно создать дополнительные реквизиты для хранения любой необходимой информации. Для обращения к дополнительному реквизиту операции должен быть указан его идентификатор, заданный в конфигураторе.
<реквизит_проводки> Помимо реквизитов проводки, задаваемых на системном уровне (Сумма, Валюта и других), в процессе конфигурирования для проводки можно создать практически неограниченное число дополнительных реквизитов для хранения любой необходимой информации.

Простой перебор операций и проводок

Пример, выбрать все операции за период:

Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперации(НачДата, КонДата); //заданный период

Пока Опер.ПолучитьОперацию()=1 Цикл

Сообщить(Опер.СуммаОперации);
Сообщить(Опер.Содержание);

//организуем перебор проводок текущей операции
//1-й вариант
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку()=1 Цикл

Сообщить(Опер.Дебет.Счет);
Сообщить(Опер.Кредит.Счет);
Сообщить(Опер.Сумма);

КонецЦикла;

//2-й вариант перебора проводок текущей операции
Для Ном = 1 По Опер.КоличествоПроводок() Цикл

Опер.ПолучитьПроводкуПоНомеру(Ном);
                  //проводка стала текущей

Сообщить(Опер.Дебет.Счет);
Сообщить(Опер.Кредит.Счет);
Сообщить(Опер.Сумма);

КонецЦикла;

КонецЦикла;

Перебор операций и проводок с фильтром

Синтаксис: ВыбратьОперацииСПроводками (<НачалоПериода>, <КонецПериода>, <Фильтр>, <Валюта>, <ПланСчетов>, <РазделительУчета>)

Пример, выбрать проводки по счету "10.1" по филиалу "Северный".

Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками(НачДата, КонДата,"10.1",,ПланыСчетов.Основной,филСеверный);
Пока Опер.ПолучитьПроводку()=1 Цикл
....<действия с текущей проводкой>
КонецЦикла;

Примеры фильтра:

Строка фильтра | Описание
50 | все проводки со счетом 50
50, * | все проводки в дебет 50 счета
* , 51 | все проводки с кредита 51 счета
50, 51 | все проводки в дебет 50 счета с кредита 51
51; 52 | все проводки со счетом 51 или счетом 52
46, 68.2 | все проводки в дебет 46 счета с кредита 68.2
"бумага" | все проводки, содержащие в содержании операции или в субконто или в реквизитах слово «бумага»
"бумага"; "картон" | все проводки, содержащие в содержании операции или в субконто или в реквизитах слово «бумага» или слово «картон»
*, 46; "бумага" | все проводки по кредиту 46 счета, содержащие в содержании операции или в субконто или в реквизитах слово «бумага»

После вызова метода ВыбратьОперацииСПроводками метод ПолучитьПроводку выбирает очередную проводку из выборки удовлетворяющую заданным условиям, а метод ПолучитьОперацию выбирает первую проводку слудующей операции удовлетворяющую заданным условиям.

Перебор операций и проводок с указанием счета и корр. счета

Синтаксис: ВыбратьОперацииСПроводками (<НачалоПериода>, <КонецПериода>, <Счет>, <КорСчет>, <Флаг>, <Валюта>, <ПланСчетов>, <РазделительУчета>)

<Счет>. Необязательный параметр. Счет — счет, по которому будут отбираться проводки.

<КорСчет>. Необязательный параметр. Счет — корреспондирующий счет, по которому будут отбираться проводки. Параметр имеет смысл, если указан параметр <Счет>.

<Флаг>. Необязательный параметр. Число — признак вида оборота. Параметр может принимать значения: 1 — отбирать проводки только по дебету счета; 2 — отбирать проводки только по кредиту счета; 3 — отбирать проводки и по дебету, и по кредиту. По умолчанию 3.

Пример, выбрать проводки Д10.1 К51 или Д51 К10.1

Сч10_1 = СчетПоКоду("10.1");
Сч51 = СчетПоКоду("51");
Опер = СоздатьОбъект("Операция");
Опер.ВыбратьОперацииСПроводками (НачДата, КонДата, Сч10_1,
              Сч51,,,ПланыСчетов.Основной);
Пока Опер.ПолучитьПроводку()=1 Цикл
....<действия с текущей проводкой>
КонецЦикла;

Фильтрация по субконто

Пример, выбрать все проводки по счету 60 для заданной организации

Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(ВидыСубконто.Организации, ВыбОрг);
Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "60");
Пока Опер.ПолучитьПроводку() = 1 Цикл
.....Сообщить("Сумма " + Опер.Сумма);
КонецЦикла;

Пример, выбрать все проводки по счету 10 для заданного материала и заданного склада

Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(ВидыСубконто.Материалы, ВыбрМатериал);
Опер.ИспользоватьСубконто(ВидыСубконто.Склады, ВыбрСклад);
Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "10");
Пока Опер.ПолучитьПроводку() = 1 Цикл
.....Сообщить("Сумма " + Опер.Сумма);
КонецЦикла;

Метод ИспользоватьКорСубконто аналогичен методу ИспользоватьСубконто, но задает фильтр по корреспондирующим субконто.

В качестве значения субконто в этим методы можно передавать «Список значений».

Фильтрация по графе отбора
синтаксис: ВыбратьПоЗначению (<НачалоПериода>, <КонецПериода> , <ВидОтбора>, <3начениеОтбора>)

Параметр <ВидОтбора> для отбора операций может принимать следующие значения:

"СуммаОперации" | Отбор по сумме операции. Доступно если в метаданных включен отбор по сумме операции.
"Содержание" | Отбор по содержанию операции. Доступно если в метаданных включен отбор по содержанию операции.
<РеквизитОперации> | Отбор по дополнительному реквизиту операции. Идентификатор реквизита должен быть указан так, как это задано в метаданных. Доступно если в метаданных включен отбор по реквизиту операции.

Параметр <ВидОтбора> для отбора проводок может принимать следующие значения:

"Счет" | Отбор по счету дебета или счету кредита проводки. Доступно если в метаданных включен отбор по счетам проводок.
"СчетДт" | Отбор по счету дебета проводки. Доступно если в метаданных включен отбор по дебету/кредиту счетов проводок.
"СчетКт" | Отбор по счету кредита проводки. Доступно если в метаданных включен отбор по дебету/кредиту счетов проводок.
"Валюта" | Отбор по валюте проводки. Доступно если в метаданных включен отбор по валюте проводок.
ВидСубконто> | Отбор по виду субконто. Идентификатор вида субконто должен быть указан так, как он задан в метаданных. Доступно если в метаданных включен отбор по этому виду субконто.
<РеквизитПроводки> | Отбор по дополнительному реквизиту проводки. Идентификатор реквизита должен быть указан так, как он задан в метаданных. Доступно если в метаданных включен отбор по этому реквизиту проводки

После выполнения данного метода обход операций (проводок) осуществляется методами ПолучитьОперацию и ПолучитьПроводку.

Поиск операции
Синтаксис: НайтиОперацию([<Документ>])

В системе 1С:Предприятие каждая операция принадлежит документу. Причем операция принадлежит только одному документу, а у документа может существовать только одна операция. Операции введенные вручную принадлежат документам специального вида «Операция». Поэтому не существует возможности передачи такого значения как «Операция». Для «идентификации» операции фактически используется значение документа, которому она принадлежит. Поэтому для позиционировании объекта «Операция» непосредственно на конкретную операцию используется значение типа «Документ».

Пример,

Опер = СоздатьОбъект("Операция");
Если Опер.НайтиОперацию(ВыбрДокумент)=1 Тогда
...<операция стала текущей>
КонецЕсли;

Удаление операций и проводок

При отмене проведения документа автоматически удаляются операции и проводки, которые он сформировал (если у него стоит параметр Создавать операцию "только при проведении").

Опер = СоздатьОбъект("Операция");
Если Опер.НайтиОперацию(ВыбрДокумент)=1 Тогда
....Опер.Удалить(1); //непосредственное удаление (по умолч.)
....Опер.Удалить(0); //пометка операции (документа) на удаление
КонецЕсли;

Методы ПометкаУдаления и СнятьПометкуУдаления работают так же, как для документов.

Метод УдалитьПроводку удаляет текущую проводку из операции.

Иногда проводки лучше не удалять, а просто выключить. Тогда они исключаются из бухгалтерских итогов. Потом проводки можно обратно включить.
Опер.ВключитьПроводки(0); //выключить проводки
Опер.ВключитьПроводки(1); //включить проводки

Другие полезные методы

Метод
Описание
ПолучитьВремя()
УстановитьВремя()
         Возвращает / устанавливает время текущей операции.
ПроверитьПроводку | Проверить проводку на соответствие корректным проводкам. Список корректных проводок задает пользователь.
Выбрана()
ПроводкаВыбрана() 		Проверяет выбранность операции и проводки.
ПланСчетов() | Возвращает план счетов текущей проводки.
ПолучитьДокумент() | Возвращает документ, которому принадлежит операция.
ПредставлениеПроводки()
ПредставлениеСубконто() 		Возвращает строковое представление проводки и субконто, например для вывода в отчет.
ЗаписатьПроводки() Метод ЗаписатьПроводки выполняет запись в информационную базу уже добавленных и заполненных проводок операции. Метод может использоваться только для атрибута «Операция» документа в момент проведения (в процедуре ОбработкаПроведения). При этом происходит обновление бухгалтерских итогов. Это позволяет при проведении документа обращаться к бухгалтерским итогам уже измененным проводками, записанными этим документом. После выполнения метода ЗаписатьПроводки и до окончания процедуры ОбработкаПроведение уже невозможно изменять или удалять проводки, добавленные до вызова этого метода.

Данный метод имеет смысл использовать, только в том случае, если существует необходимость обращения к итогам, измененным проводками записываемой операции.

Процедура ОбработкаПроведения()

 Сч20
                      = СчетПоКоду("20");
Cч40 = CчeтПoKoдy("40");
СписаниеСчетаНаСч20(СчетПоКоду("25"));
СписаниеСчетаНаСч20(СчетПоКоду("26"));
Операция.ЗаписатьПроводки();
СписаниеСчета20На40();
Операция.Содержание = "Закрытие фин. результатов за
                      " + Формат(ДатаДок, "Д ММММГГГГ");
Операция.Записать();

КонецПроцедуры


Бухгалтерские счета | Учебник по 1С | mista.ru

Бухгалтерские счета

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Бухгалтерия / Бухгалтерские счета

Перебор счетов
 Атрибуты счета
 Счета и субсчета
 Виды субконто
 Список счетов
Другие полезности

Работа с бухгалтерскими счетами очень похожа на работу с иерархическим справочником. Существует список счетов, имеющих стандартные атрибуты (Код, Наименование и др), и дополнительные реквизиты, задаваемые разработчиком. Реквизиты могут быть периодическими, т.е. хранить значение на определенную дату. Счета могут объединяться в группы, тогда счета, входящие в группу, называются субсчетами. Каждый счет обязательно принадлежит определенному плану счетов. В конфигурации может быть произвольное количество планов счетов, один из которых является основным.

Перебор счетов

1-й вариант:

Счета = СоздатьОбъект("Счет.ОснПлан");
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
....ТекСчет = Счета.ТекущийСчет();
....<действия с тек. счетом>
КонецЦикла;

2-й вариант:

Счета = СоздатьОбъект("Счет"); //не указан план счетов
Счета.ИспользоватьПланСчетов(ПланыСчетов.ОснПлан); //а вот теперь указан
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
....ТекСчет = Счета.ТекущийСчет();
....<действия с тек. счетом>
КонецЦикла;

Атрибуты счета

Счет имеет следующие атрибуты:

Атрибут | Описание
Код | Полный код счета. Например, "10.1" или "62.5.1"
Наименование | Название счета. Например, "Материалы" или "Расч. с бюдж. по НДС"
Валютный | Признак ведения валютного учета. 1 - валютный учет ведется, 0 - не ведется
Количественный | Признак ведения количественного учета. 1 - количественный учет ведется, 0 - не ведется
Забалансовый | Признак забалансового счета. 1 - счет забалансовый, 0 - балансовый
Активный | Тип остатка по счету. 1 - счет активный, 2 - счет пассивный, 3 - счет активно-пассивный
<реквизит> | Кроме стандартных вышеперечисленных реквизитов, разработчик может задать произвольное количество дополнительных реквизитов. Реквизиты могут быть периодическими, т.е. хранить значение на определенную дату. Например, может быть создан периодический реквизит "Ответственный" типа "Справочник.Сотрудники". Он будет показывать сотрудника, ответственного за ведение данного счета.

Работа с периодическими реквизитам счета не отличается от работы с периодическими реквизитами справочника.

Пример, прочитать и установить ответственного за ведение счета:

Счета = СоздатьОбъект("Счет.ОснПлан");
Счета.НайтиПоКоду("10.1");
БылОтветственный = Счета.Ответственный.Получить(НекаяДата);
Счета.Ответственный.Установить(НекаяДата, ВыбрСотрудник);
Счета.Записать();

Можно установить
              дату выборки периодических реквизитов, тогда ниже уже нельзя применять
              методы Установить и Получить

Счета = СоздатьОбъект("Счет.ОснПлан");
Счета. ИспользоватьДату(НекаяДата);
Счета.НайтиПоКоду("10.1");
БылОтветственный = Счета.Ответственный;
Счета.Ответственный = ВыбрСотрудник;
Счета.Записать();

Счета и субсчета

Счета могут объединяться в группы. Счет, который является группой, называется "синтетический счет". Счет, который входит в группу, называется "субсчет". Для работы с такими счетами применяются следующие методы:

Метод
Описание
ЭтоГруппа()

Определяет, является ли данный счет группой (может иметь субсчета) или нет.
Возвращает: 1 - счет является группой; 0 - счет не является группой.

Пример, вывести все синтетические счета:

Счета = СоздатьОбъект("Счет.ОснПлан");
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
....Если Счета.ЭтоГруппа()=1 Тогда
..........Сообщить(Счета.Код + " " + Счета.Наименование);
....КонецЕсли;
КонецЦикла;

ИспользоватьРодителя(<Счет>)

Устанавливает / выдает значение родителя (счета вышестоящего уровня), используемого для выборки счетов. Возвращает: значение типа ''Счет'' - текущее значение используемого родителя на момент до исполнения метода.

Пример,
                    вывести все субсчета счета "10 Материалы":

Счета = СоздатьОбъект("Счет.ОснПлан");
Сч10 = СчетПоКоду(10);
Счета.ИспользоватьРодителя(Сч10);
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
.....Сообщить(Счета.Код + " " + Счета.Наименование);
КонецЦикла;
Уровень()

Возвращает уровень вложенности текущего счета. (возвращает 1 - для счета верхнего уровня)

Пример, вывести все счета в виде дерева:

Счета = СоздатьОбъект("Счет.ОснПлан");
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл

отступ
                      = "";
Для ном = 1 По Счета.Уровень() Цикл
....отступ = отступ + " ";
КонецЦикла;

Сообщить(отступ + Счета.Код + " " + Счета.Наименование);

КонецЦикла;
ПринадлежитГруппе(<Счет>)

Определяет, является ли текущий счет субсчетом для счета, указанного в качестве параметра метода. Проверка выполняется по всем вышестоящим уровням счета. Возвращает: 1 - текущий счет является субсчетом для счета, указанного в качестве параметра; 0 - не является.

Пример,
Сч10
                    = СчетПоКоду("10");
СубСч10 = СчетПоКоду("10.5.1");
Сообщить(СубСч10.ПринадлежитГруппе(Сч10));
                    //метод вернет 1
Родитель(<НомерУровня>)

Возвращает счет вышестоящего уровня для данного счета. <НомерУровня> - число, которое определяет, какого уровня вышестоящий счет должен быть выдан. Если параметр не указан - выдается непосредственный родитель.

Например, для счета "10.5" этот метод вернет счет с кодом "10".
КодСубсчета()

Выдает код счета без кодов счетов вышестоящих уровней.
Возвращает: строковое значение - код счета без кодов счетов вышестоящих уровней.

Например, для счета "10.5" этот метод вернет строковое значение "5".

ВыборГруппы(<флаг>)

Этот метод утанавливает режим выборки групп. Данный метод может применяться как для позиционируемых объектов, созданных функцией ''СоздатьОбъект'', так и для элементов диалога типа ''Счет''. По умолчанию выбор группы разрешен, за исключением счетов дебета и кредита в проводках операции.

ВыбрСчет.ВыборГруппы(1); //разрешить выбор группы
ВыбрСчет.ВыборГруппы(0); //запретить выбор группы

Виды субконто

Для ведения аналитического учета в 1С используется термин "субконто". Субконто в системе 1С:Предприятие называется объект аналитического учета. Термином «субконто» могут быть обозначены любые объекты аналитического учета: основные средства, нематериальные активы, материалы, организации, подотчетные лица, договоры, бюджеты. Видом субконто, в свою очередь, называется множество однотипных объектов аналитического учета. Например, вид субконто "Контрагенты" типа Справочник.Контрагенты, субконто - "Магазин Красная Заря".

В 1С у счета может быть до 5 прикрепленных видов субконто. Максимальное количество видов субконто задается в Конфигураторе, но не может превышать 5.

Пример, вывести все виды субконто, прикрепленные к заданному счету:

Счета = СоздатьОбъект("Счет.Основной");
Счета.НайтиПоКоду("10.1");
Для Ном = 1 По Счета.КоличествоСубконто() Цикл
.... Сообщить("Вид субконто " + Счета.ВидСубконто(Ном));
КонецЦикла;

Создание, удаление и корректировка счетов
Обычно счета создаются вручную в режиме Конфигуратор или Предприятие. Но иногда может потребоваться программная корректировка списка счетов.

Счета = СоздатьОбъект("Счет.Основной");

Счета.Новый(1);
              //у счета будут субсчета
Счета.Код = "10";
Счета.Наименование = "Материалы";
Счета.Активный = 1; //активный
Счета.Записать();

Счета.Новый();
Счета.Код = "10.1";
Счета.Наименование = "Основные материалы";
Счета.ВидСубконто(1,ВидыСубконто.Материалы);
Счета.ВидСубконто(2,ВидыСубконто.Склады);
Счета.Записать();

Пример, изменить наименование счета:

Счета = СоздатьОбъект("Счет.Основной");
Счета.НайтиПоКоду("10");
Счета.Наименование = "Все материалы";
Счета.Записать();

Пример, пометить на удаление все счета, введенные пользователем в режиме "Предприятие". Оставить только счета, заданные разработчиком в Конфигураторе.

Счета = СоздатьОбъект("Счет.Основной");
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
.....Если Счета.ЗаданВКонфигурации()=0 Тогда
.........Счета.Удалить(0); //пометить на удаление
.....КонецЕсли;
КонецЦикла;

Пример, отменить все пометки на удаление:

Счета = СоздатьОбъект("Счет.Основной");
Счета.ВыбратьСчета();
Пока Счета.ПолучитьСчет()=1 Цикл
.....Если
              Счета.ПометкаУдаления()=1 Тогда
.........Счета.СнятьПометкуУдаления();
.....КонецЕсли;
КонецЦикла;

Другие полезные методы

Некоторые методы уже применялись в примерах, а теперь сведем их в таблицу:

Метод | Описание
НайтиПоКоду(код) | Этот метод выполняет поиск счета в плане счетов по коду счета, который передается методу в качестве параметра. Если счет найден, метод возвращает 1 и позиционирует объект на выбранном счете.
НайтиСчет(<счет>) | Этот метод выполняет поиск счета по значению, заданному параметром <Счет>, и позиционирует объект на выбранном счете.
Выбран() | Этот метод возвращает число со значением 1 — если счет выбран (спозиционирован) или значение не пустое, 0 — если не выбран или значение пустое.
Выбрать() | Этот метод вызывает на экран диалог, содержащий план счетов. Пользователь должен интерактивно выбрать требуемый счет. Если счет выбран, метод возвращает 1 и позиционирует объект на выбранном счете. Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.
СчетПоКоду(код[,плансчетов]) | Глобальная системная функция. Возвращает счет по коду. Если план счетов не указан, тогда поиск осуществляется в основном плане счетов, заданном в Конфигураторе.
ОсновнойПланСчетов() | Глобальная системная функция. Возвращает план счетов, заданный в Конфигураторе в качестве основного.


Бухгалтерский запрос | Учебник по 1С | mista.ru

Бухгалтерский запрос

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Бухгалтерия / Бухгалтерский запрос

Для получения большого количества итогов в различных разрезах объект «Бухгалтерские Итоги» переключается в режим работы с запросом. Для переключения в этот режим вызывается метод ВыполнитьЗапрос в параметрах которого, а также дополнительными методами устанавливается состав итогов, которые будут получены запросом. Выполнение данного метода осуществляет выборку данных и их предварительную обработку.

После выполнения запроса с помощью специального набора методов объекта «Бухгалтерские Итоги» осуществляется получение итогов, полученных данным запросом. К этим методам относятся методы обхода итогов в различных разрезах (сформированных запросом) и методы для получения собственно итогов. Кроме того специальный набор атрибутов объекта «Бухгалтерские Итоги» позволяет обращаться процессе обхода результатов запроса к значениям полученных группировок.

Метод ВыполнитьЗапрос

Синтаксис: ВыполнитьЗапрос(<НачалоПериода>, <КонецПериода>, <ФильтрПоСчетам>, <ФильтрПоКоррСчет>, <Валюта>, <ТипИтогов>, <Периодичность>, <ТипСуммы>)

Параметр
Описание
<НачалоПериода>
         Необязательный параметр. Выражение типа дата, документ или позиция документа начала периода запроса. Если этот параметр не указан, будут вычисляться начальные сальдо на момент, указанный в параметре <КонецПериода>
<КонецПериода>
         Необязательный параметр. Выражение типа дата, документ или позиция документа конца периода запроса. Если этот параметр не указан, будут вычисляться начальные сальдо на момент, указанный в параметре <НачалоПериода>.
<ФильтрПоСчетам>
         Необязательный параметр. Счета, для которых будут отбираться итоги в запросе. Задается значением типа «Счет» или объектом типа «Список-Значений», содержащим значения типа «Счет», либо строкой содержащей список кодов счетов, разделенных символом ", " или ";". Если параметр не указан, отбор будет выполняться по всем счетам.
<ФильтрПоКоррСчет>
         Необязательный параметр. Значение типа «Счет» — корреспондирующий счет, в корреспонденции с которым будут отбираться итоги счета, указанного в параметре <ФильтрПоСчетам>. Задается значением типа «Счет» или объектом типа «СписокЗначений», содержащим значения типа «Счет», либо строкой содержащей список кодов счетов, разделенных символом "," или ";". Если параметр не указан, будут отбираться итоги в корреспонденции со всеми счетами.
<Валюта>
         Необязательный параметр. Значение типа «Справочник.Валюты». Если параметр не указан итоги выдаются без учета валюты.
<ТипИтогов>
         Необязательный параметр. Число — тип отбираемых итогов. Может принимать следующие значения:
  • 1 — остатки и обороты по счету в целом (по умолчанию);
  • 2 — обороты между счетами;
  • 3 — Первое и второе вместе.
<Периодичность>

Необязательный параметр. Позволяет получить дополнительный разрез итогов по периодам. Число или символьная строка. По умолчанию периодичность не задана. Параметр <Периодичность> может принимать следующие значения:

Число | Синоним | Примечание
1 | «Период» | Промежуточные итоги не рассчитываются;
2 | «Операция» | Промежуточные итоги рассчитываются по операциям;
3 | «Проводка» | По проводкам
4 | «День» | По дням
5 | «Неделя» | По неделям
6 | «Декада» | По декадам
7 | «Месяц» | По месяцам
8 | «Квартал» | По кварталам
9 | «Год» | По годам
<ТипСуммы>
         Необязательный параметр. Число или строка — тип рассчитываемых итогов. Может принимать следующие значения (в скобках указаны строковые синонимы):
  • 1 («С») рассчитывать суммы;
  • 2 («В») рассчитывать валютные суммы;
  • 4 («К») рассчитывать количество.

Если требуется одновременно рассчитывать разные суммы, значение параметра получается путем сложения допустимых значений, например: 5 (1+4) — рассчитывать суммы и количество. При указании параметра строкой в ней указываются все символы, которые обозначают типы сумм, которые нужно рассчитывать. По умолчанию рассчитываются все типы сумм.

В зависимости от переданных параметров итоги могут быть подготовлены методом ВыполнитьЗапрос в различных разрезах. Кроме того, на результат запроса влияют дополнительные установки, которые выполняются вызовами специальных методов объекта «Бухгалтерские Итоги».

Метод ВключатьСубсчета позволяет получить итоги в разрезе субсчетов.

Применение метода ИспользоватьСубконто (перед вызовом ВыполнитьЗапрос) позволяет сформировать запрос в разрезе субконто.

После выполнения запроса обход запросов в различных разрезах выполняется соответствующими методами объекта. Для доступа к итогам в разрезе периодов используются методы ВыбратьПериоды и ПолучитьПериод.

Пример
//рассчитать остатки и обороты по счету 60 за заданный период
БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "60", , 3);

Метод ВключатьСубсчета

Метод ВключатьСубсчета должен вызываться до выполнения метода ВыполнитьЗапрос. Он устанавливает режим, при котором итоги отбираемые запросом будут разворачиваться по субсчетам соответвенно основных и корреспондирующих счетов.

Синтаксис: ВключатьСубсчета(<ФлагСчета>, <ФлагКоррСчета>}

Параметр
Описание
<ФлагСчета>

Необязательный параметр. Признак развертывания сальдо по субсчетам основного счета. Число:

  • 0 — не разворачить по субсчетам (по умолчанию);
  • 1 — разворачивать по субсчетам;
  • -1 (минус единица) — не выдавать итоги по счетам-группам.
<ФлагКоррСчета>
         Необязательный параметр. Признак развертывания сальдо по субсчетам корреспондирующего счета. Число:
  • 0 — не разворачить по субсчетам (по умолчанию);
  • 1 — разворачивать по субсчетам;
  • -1 (минус единица) — не выдавать итоги по корреспондирующим счетам-группам.

Метод ИспользоватьСубконто

Метод ИспользоватьСубконто устанавливает режим отбора итогов по субконто методом ВыполнитьЗапрос. Метод ИспользоватьСубконто слудет вызывать до вызова метода ВыполнитьЗапрос. После выполнения метода ВыполнитьЗапрос установки метода ИспользоватьСубконто сбрасываются и перед слудеющим запросом их нужно устанавливать заново.

Метод ИспользоватьСубконто может вызываться последовательно несколько раз. В этом случае установки, выполняемые этим методом суммируются.

Синтаксис: ИспользоватьСубконто(<ВидСубконто>, <Субконто>, <ТипФильтра>, <ПоГруппам>)

Параметр
Описание
<ВидСубконто>

         Значение типа «Вид Субконто» — расчет временных итогов будет выполнен только для субконто указанного вида. Задается значением типа «Вид Субконто» или строкой содержащей имя идентификатора вида субконто, как он назван в конфигураторе.
<Субконто>
         Необязательный параметр. Здесь может быть задано или одно конкретное значение субконто, по которому будут отобраны итоги по аналитике или объект типа «Список значений», где можно задать несколько значений субконто. Если параметр не задан — то считается пустым значением субконто.
<ТипФильтра> Необязательный параметр. Число — тип фильтра по субконто. Может принимать следующие значения:
  • 1 — разворачивать по данному субконто (по умолчанию),
  • 2 — отбирать по данному субконто,
  • 3 — не учитывать это субконто вообще.
<ПоГруппам> Необязательный параметр. Число — группировка др итогов по субконто. Параметр <ПоГруппам> имеет смысл, если параметр <ТипФильтра> равен 1, а вид субконто, заданный параметром <ВидСубконто>, имеет тип значения «Справочник». Параметр может принимать значения:
  • 0 — не показывать итоги по группам справочника (по умолчанию);
  • 1 — показывать итоги по группам справочника.

Пример:

* Данный запрос формирует итоги по счету 10 в разрезе материалов по одному складу.

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы,
              , 1);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Склады, ВыбСклад, 2);
БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "10");

Метод ИспользоватьКорСубконто

Метод ИспользоватьКорСубконто устанавливает режим отбора итогов по субконто методом ВыполнитьЗапрос. Метод ИспользоватьКорСубконто слудет вызывать до вызова метода ВыполнитьЗапрос. После выполнения метода ВыполнитьЗапрос установки метода ИспользоватьКорСубконто сбрасываются и перед слудеющим запросом их нужно устанавливать заново.

Метод ИспользоватьКорСубконто может вызываться последовательно несколько раз. В этом случае установки, выполняемые этим методом суммируются.

Синтаксис: ИспользоватьКорСубконто(<ВидСубконто>, <Субконто>, <ТипФильтра>, <ПоГруппам>)

Параметры аналогичны параметрам метода ИспользоватьСубконто.

Метод Опции

Синтаксис: Опции(<ВключатьЗабалансовыеСуммы>, <ВключатьОборотныеСубконтоСуммы>)

Метод Опции должен вызываться до выполнения метода ВыполнитьЗапрос. Он устанавливает режимы включения в итоги сумм по забалансовым счетам и оборотным субконто. Если метод не вызвался, суммы по забалансовым счетам и оборотным субконто не включаются в запрос.

Если параметр равен 1, то эти суммы включаются в запрос, если 0, то не включаются.

Обработка результатов запроса (обход группировок)

Методы обхода группировок результата запроса приведены ниже:

Методы
Описание

ВыбратьСчета
ПолучитьСчет

Синтаксис: ВыбратьСчета(<ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>)

Параметр
Описание
<ФлагВсе> Необязательный параметр.
  • 0 — отбирать те счета, которые имели итоги на этом уровне обхода итогов запроса (по умолчанию);
  • 1 — включить в выборку все счета, которые имели итоги в данном запросе;
  • -1, -2 ... — включить в выборку счета, которые имели итоги в группировке n-го вышестоящего уровня.
<ФлагДК> Необязательный параметр.
  • 1 — включать в выборку счета только с дебетовыми оборотами;
  • 2 — включать в выборку счета только с кредитовыми оборотами.
  • 0 — включать в выборку счета вне зависимости от дебетовых/кредитовых оборотов (по умолчанию).
<Номер>
         Необязательный параметр. Положительное целое число — номер выборки. Если параметр не указан, выборке присваивается номер 0.

Выборке, открываемой методом ВыбратьСчета, может быть присвоен номер — положительное целое число. Номер — это «метка» выборки. Номер может использоваться для обращения к результатам выборки при помощи метода ПолучитьСчет. Использование этой метки необходимо, если требуется получить две группировки по счету.
<РазвСальдо> Необязательный параметр. Признак необходимости рассчитывать развернутое сальдо по субконто. Используется только если в запросе участвуют субконто.
  • 1 — рассчитывать развернутое сальдо.
  • 0 — не рассчитывать развернутое сальдо (по умолчанию);

Синтаксис: ПолучитьСчет(<Номер>, <Счет>)

Параметр | Описание
<Номер> | Необязательный параметр. Положительное целое число — номер выборки. Если раньше было открыто несколько выборок по счету.
<Счет> | Необязательный параметр. Конкретное значение счета, которое нужно получить из выборки.

Пример.

БухИтоги.Запрос(Дата1, Дата2);
БухИтоги.ВыбратьСчета();
Пока БухИтоги.ПолучитьСчет() = 1 Цикл

Деб = БухИтоги.ДО();
Кред = БухИтоги.КО();

КонецЦикла;
ВыбратьКорСчета
ПолучитьКорСчет

Синтаксис
ВыбратьКорСчета(<ФлагВсе>, <ФлагДК>, <Номер>)
ПолучитьКорСчет(<Номер>, <Счет>)

Пример:

БухИтоги.Запрос(Дата1, Дата2);
БухИтоги.ВыбратьСчета();
Пока БухИтоги.ПолучитьСчет() = 1 Цикл

БухИтоги.ВыбратьКорСчета();
Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл

Деб = БухИтоги.ДО();
Кред = БухИтоги.КО();

КонецЦикла;

КонецЦикла;
ВыбратьВалюты
ПолучитьВалюту

Синтаксис:
ВыбратьВалюты(<ФлагВсе>, <ФлагДК>, <Номер> , <РазвСальдо>, <Сортировка>)
ПолучитьВалюту(<Номер>, <Валюта>)

Пример:

БухИтоги.Запрос(Дата1, Дата2);
БухИтоги.ВыбратьСчета();
Пока БухИтоги.ПолучитьСчет() = 1 цикл

БухИтоги.ВыбратьВалюты();
Пока БухИтоги.ПолучитьВалюту() = 1 цикл

ДебВ = БухИтоги.ДО(2);
КредВ = БухИтоги.КО(2);

КонецЦикла;

КонецЦикла;
ВыбратьПериоды
ПолучитьПериод

Синтаксис:
ВыбратьПериоды(<ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>)
ПолучитьПериод(<Номер>, <ДатаНачалаПериода>)

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, , , , , "Месяц");
БухИтоги.ВыбратьСчета();
Пока БухИтоги.ПолучитьСчет() = 1 цикл

БухИтоги.ВыбратьПериоды();
Пока БухИтоги.ПолучитьПериод() = 1 цикл

Деб = БухИтоги.ДО();
Кред = БухИтоги.КО();

КонецЦикла;

КонецЦикла;
ВыбратьСубконто
ПолучитьСубконто

Синтаксис:
ВыбратьСубконто(<Индекс>, <ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>, <Сортировка>, <ПорядокОбхода>)
ПолучитьСубконто(<Индекс>, <Номер>, <Субконто>)

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы,
                    , 1);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Склады, , 1);
БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "10");
БухИтоги.ВыбратьСубконто(1);
Пока БухИтоги.ПолучитьСубконто(1) = 1 цикл

БухИтоги.ВыбратьСубконто(2);
Пока БухИтоги.ПолучитьСубконто(2) = 1 цикл

Деб = БухИтоги.ДО();
Кред = БухИтоги.КО();

КонецЦикла;

КонецЦикла;
ВыбратьКорСубконто
ПолучитьКорСубконто

Синтаксис:
ВыбратьКорСубконто(<Индекс>, <ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>, <Сортировка>, <ПорядокОбхода>)
ПолучитьКорСубконто(<Индекс>, <Номер>, <Субконто>)

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары,
                    , 1);
БухИтоги.ИспользоватьКорСубконто(ВидыСубконто.Клиенты, , 1);
БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);
БухИтоги.ВыбратьСубконто();
Пока БухИтоги.ПолучитьСубконто() = 1 цикл

БухИтоги.ВыбратьКорСубконто();
Пока БухИтоги.ПолучитьКорСубконто() =1 цикл

Деб = БухИтоги.КорДО();
Кред = БухИтоги.КорКО();

КонецЦикла;

КонецЦикла;

Атрибуты и методы результата запроса

При обходе группировок результата запроса возможно обращение к следующим атрибутам и методам:

Атрибут | Описание
Счет | Текущий счет, выбранный функцией ПолучитьСчет
КорСчет | Текущий корр. счет, выбранный функцией ПолучитьКорСчет
Валюта | Текущая валюта, выбранная функцией ПолучитьВалюту
НачДата КонДата | Начальная и конечная дата текущего периода, выбранного функцией ПолучитьПериод
Операция | Атрибут позволяет обращаться к текущей операции, если запрос получен с детализацией итогов по периоду «Операция» и «Проводка».

Метод
Описание
Субконто
КорСубконто

ПредставлениеСубконто
ПредставлениеКорСубконто

Синтаксис
Субконто(<Номер> | <ВидСубконто>)
КорСубконто(<Номер> | <ВидСубконто>)

Пример

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары,
                    , 1);
БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);
БухИтоги.ВыбратьСубконто();
Пока БухИтоги.ПолучитьСубконто() = 1 цикл
......... Сообщить(БухИтоги.Субконто());
КонецЦикла;
ЭтоГруппа Для тех субконто, которые выбираются из иерархических справочников метод возвращает 1, если текущее значение является группой справочника.
СНД
СНК
СКД
СКК
ДО
КО

СНД
                    — дебетовое сальдо на начало периода;
СКД — дебетовое сальдо на конец периода;
СНК — кредитовое сальдо на начало периода;
СКК — кредитовое сальдо на конец периода;
ДО — дебетовый оборот за период;
КО — кредитовый оборот за период.

Синтаксис (у всех одинаковый): СНД(<ТипСуммы>)

Параметр <ТипСуммы> может принимать следующие значения:

  • 1 ("С") - сумма (по умолчанию)
  • 2 ("В") - валютная сумма
  • 3 ("К") - количество

СНДРС
СКДРС
СНКРС
СККРС

 СНДРС — дебетовое развернутое сальдо на начало периода;
СКДРС — дебетовое развернутое сальдо на конец периода;
СНКРС — кредитовое развернутое сальдо на начало периода;
СККРС — кредитовое развернутое сальдо на конец периода;
КорДО
КорКО 		Возвращает дебетовый или кредитовый оборот между корреспондирующими счетами или субконто.
ВыбранаПоДт
ВыбранаПоКт 		Эти функции возвращают 1, если выбран итог по дебету / кредиту.


Бухгалтерия | Учебник по 1С | mista.ru

Бухгалтерия

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Бухгалтерия
Утро. Воскресенье. В дупель пьяный бухгалтер с трудом отрывает голову от стола, видит запись вчерашней игры в преферанс, и ошеломленно шепчет "... Тридцать лет работаю бухгалтером... но чтобы ЧЕТЫРЕХсторонний баланс..."

Для изучения этого раздела вы должны знать теорию бухгалтерского учета.

Счет и план счетов

Счет в 1С:Предприятие соответствует обычному бухгалтерскому счету. Совокупность счетов образует план счетов. На предприятии может применяться одновременно несколько планов счетов. Счет имеет код и наименование. Длина и структура кода счета задается при конфигурировании, например, ##.## Счета, заданные в режиме Конфигуратора нельзя редактировать в режиме пользователя.

Субсчет

У счета могут быть субсчета. Например, счет 10 "Материалы" может иметь субсчет 10.3 "Топливо". В системе 1С:Предприятие возможно ведение субсчетов с более сложной структурой: у субсчета может, в свою очередь, быть свой "субсубсчет" и так далее.

Тип счета: а ктивный / пассивный / активно-пассивный

Для активного счета сумма по дебету увеличивает сальдо по счету (дебетовое сальдо). Для пассивного счета сумма по дебету уменьшает сальдо по счету (кредитовое сальдо). Для активно-пассивного счета сальдо может быть свернутым или развернутым. Развернутое сальдо означает наличие остатка по дебету и кредиту счета одновременно.

Аналитический учет (субконто и вид субконто).

Для получения информации о наличии и движении средств предприятия не только по счетам, но и в более детальных разрезах, предназначено ведение аналитического учета.

Субконто. Для обозначения объектов аналитического учета в 1С:Предприятии используется термин субконто. Наличие субконто позволяет более детально раскрыть информацию о средствах предприятия, накапливаемых на счетах бухгалтерского учета. В этом субконто похожи на субсчета - они позволяют получать более мелкую градацию итогов внутри одного счета по определенному признаку. Кроме того, субконто позволяет отследить движение средств по одному объекту аналитического учета по всем счетам, на которых ведется аналитический учет в данном разрезе. Например, движение конкретного основного средства.

Вид субконто. Под видом субконто понимается совокупность однотипных объектов аналитического учета. Для одного счета может быть задано ведение аналитического учета по нескольким видам субконто. Так, например, для счета 10 может быть определено ведение аналитического учета по двум видам субконто: "Материалы" и "Склады". Это является примером многомерного учета в 1С:Предприятие. Итоги можно получать как по материалам в разрезе складов, так и по складам в разрезе материалов, а также, разумеется, в целом по всем материалам и по всем складам.

Количественный учет

Для количественного счета в 1С:Предприятие накапливается итоговая информация в количественном (натуральном) выражении. Возможность ведения количественного учета обычно используется в совокупности с аналитическим учетом. В этом случае можно получать более полную отчетную информацию по объектам аналитического учета, например, наличие товаров на складе.

Валютный учет

Система 1С:Предприятие позволяет вести валютный учет по нескольким валютам. Все используемые валюты задаются в справочнике валют. Для всех валютных счетов итоговая информация накапливается на счете для каждой валюты отдельно, а также по счету в целом. По каждой валюте итоговая информация по счету накапливается как в валютном выражении, так и в ее эквиваленте базовой валюты. Если в справочнике валют имеется курс, то при вводе проводок будет автоматически вычисляться сумма проводки по валютной сумме и текущему курсу.

Забалансовые счета

В некоторых случаях на предприятиях требуется использование вспомогательных счетов, которые не должны попадать в баланс. Для забалансовых счетов не действует правило двойной записи.

Разделитель учета

Система 1С:Предприятие позволяет вести бухгалтерский учет нескольких предприятий в одной информационной базе. Для этого используется разделитель учета. Под разделителем учета понимается некоторое значение, например "Фирма", которое заносится в каждую проводку и позволяет получать все бухгалтерские итоги по каждому такому значению отдельно. Это позволяет, фактически, получить несколько независимых балансов.

Операции и проводки

Операции, проводки, корреспонденции

Для отражения данных о хозяйственной деятельности предприятия в бухгалтерском учете используются операции. Каждая операция содержит одну или несколько проводок. Проводка всегда принадлежит одной и только одной операции. Каждая из проводок, в свою очередь, может состоять из одной или нескольких корреспонденций. Проводки, содержащие несколько корреспонденций, называются сложными. В сложных проводках дебет одного счета корреспондирует с кредитом нескольких счетов или наоборот.

Свойства операции и проводки

Операция имеет следующие свойства: содержание операции, ее общая сумма, дата, номер, а также другие реквизиты, определяемые конфигурацией.

Проводка имеет следующие свойства: счет дебета, субконто счета дебета, счет кредита, субконто счета кредита, сумма проводки, валюта, количество, валютная сумма, а также другие реквизиты, определяемые конфигурацией.

Журнал операций и журнал проводок

Журнал операций служит для просмотра списка введенных бухгалтерских операций. Каждая операция отображается в нем одной строчкой, содержащей наиболее важную информацию об операции: дату, вид документа, содержание, сумму операции и т. д. В журнале операций существует возможность просмотра проводок текущей операции. В журнале операций можно просматривать как все операции, так и выборочно, руководствуясь при этом различными условиями. Так, например, можно сделать "видимыми" только те операции, которые попали в заданный временной интервал.

Журнал проводок является средством просмотра введенных проводок. Каждая операция содержит в себе одну или несколько проводок. Проводка всегда принадлежит одной и только одной операции. В журнале проводок отражаются проводки, относящиеся к разным операциям.

Режимы ввода операций

При ручном вводе операции все данные заносятся непосредственно пользователем.

Использование типовых операцийавтоматизирует ввод стандартных или часто используемых операций. Типовая операция представляет собой шаблон хозяйственной операции, т.е. некоторые данные уже введены, например, счет дебета и счет кредита. В типовой операции есть некоторые возможности по автоматическому расчету сумм проводок и других данных. В отличие от документов, которые полностью настраиваются в конфигурации, типовые операции вводятся пользователем.

Использование документов еще больше облегчает ввод хозяйственной операции. При таком вводе операции пользователю не надо заполнять все данные об операции: как правило, в документ вводится необходимая информация о хозяйственной операции, а проводки формируются автоматически при проведении документа.

Бухгалтерские итоги

Работа с основными итогами

При вводе операций 1С:Предприятие поддерживает в актуальном состоянии основные бухгалтерские итоги для быстрого обращения к ним при составлении отчетов и выполнения других задач. Основными итогами называются остатки и обороты по счетам и объектам аналитического учета, а также обороты между счетами за любой рассчитанный период с детализацией до месяца.

Для получения других итогов (с детализацией меньше месяца, с получением оборотов между различными объектами аналитики, а также сложных выборок) требуется выполнение предварительных действий — временного расчета или запроса.

Работа с временными итогами (метод Рассчитать)

Для переключения в режим работы с временными итогами следует выполнить метод Рассчитать. После этого объект позволяет получать остатки и обороты по счетам за произвольный период, заданный при вызове метода Рассчитать.

Работа в режиме запроса (метод ВыполнитьЗапрос)

Для получения большого количества итогов в различных разрезах объект «Бухгалтерские Итоги» переключается в режим работы с запросом. Для переключения в этот режим вызывается метод ВыполнитьЗапрос в параметрах которого, а также дополнительными методами устанавливается состав итогов, которые будут получены запросом. Выполнение данного метода осуществляет выборку данных и их предварительную обработку


Конфигуратор | Учебник по 1С | mista.ru

Конфигуратор

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Конфигуратор

Назначение конфигуратора
Окно Конфигуратора
Дерево конфигурации
Редактор форм
Программные модули
Шаблоны
Редактор печатных форм
Администрирование базы
Загрузка измененной конфигурации

Сидит папа-программист в глубокой отладке, к нему подходит сынишка и спрашивает:
- Папа, а почему солнце всходит на востоке?
Папа отвечает:
- Ты проверял?
- Да!
-Каждый день проверял?
- Да!
- И все время на востоке?
-Да, все время!
- Только ради бога, сынок! Ничего не трогай! Ничего не меняй!

Назначение конфигуратора

Конфигуратор системы 1С:Предприятие является специальным режимом запуска 1С и предназначен для разработчиков, программистов. В этом режиме разработчик создает или корректирует структуру базы данных, программные модули, производит административные работы. В режиме Конфигуратора нельзя вводить информацию в базу данных, за исключением загрузки базы данных из архивов. Обычные пользователи работают в другом режиме "Предприятие". В этом режиме возможен ввод данных, заполнение справочников и ввод документов, формирование отчетов и запуск обработок. В режиме Предприятие нельзя редактировать структуру конфигурации.

Итак, основное правило:
В режиме Конфигуратор - мы определяем структуру базы данных и пишем программы.
В режиме Предприятие мы используем программы и вводим данные.

Основное окно конфигуратора

Слева вы видите дерево конфигурации, в котором редактируется структура базы данных.

Справа окно Синтакс-помощника, которое часто используется при написании программных модулей для того, чтобы вспомнить синтаксис или параметры конкретной процедуры/функции.

Дерево конфигурации (метаданные)

В окне конфигурации можно раскрывать списки объектов (константы, справочники, документы и т.д.). Объекты можно добавлять, удалять, редактировать, изменять их порядок, сортировать, писать для них описание.

Каждый объект имеет свойства и контекстное меню (вызывается правой кнопкой мыши).

Также к конфигурации относятся Интерфейсы и Права. Для их вызова нужно щелкнуть вкладки, расположенные внизу дерева конфигурации.

Кроме того, когда окно дерева конфигурации активно в меню Действия становятся доступными пункты "Глобальный модуль", "Общие таблицы" и "Библиотека картинок".

Редактор форм

У многих объектов конфигурации есть экранные формы. В частности экранные формы в версии 7.7 имеют справочники, документы, журналы документов, отчеты, обработки, журналы расчетов, журнал операций, журнал проводок, план счетов и счет. У некоторых объектов может быть несколько экранных форм, например, у справочников есть формы списков, форма элемента и форма группы.

Поясним значение кнопок панели редактора форм:

Эти кнопки становятся доступными, когда выделено несколько элементов управления на форме. Они позволяют выравнивать их по левому, по правому, по верхнему и по нижнему краю.
Эти кнопки центрируют выделенные элементы управления относительно всей формы по вертикали или горизонтали .
Эти кнопки равномерно распределяют выделенные элементы управления по вертикали или горизонтали.
Эти кнопки делают выделенные элементы управления одной ширины, одной высоты или одного размера. Определяющим является элемент управления, выделенный последним. Два элемента управления можно выделить, удерживая кнопку Shift и щелкая поочередно на каждом из них.
Включить/выключить решетку.
Запустить тестовое окно (проверить форму в режиме конфигуратора).
Вызвать окно редактирования слоев формы (попробуйте обязательно - это очень важно!).

Разберем кнопки на панели элементов управления:

Эта кнопка вызывает что-то типа мастера элементов диалога. Можно быстро разместить любой элемент управления, назначить ему тип, присвоить вызов процедуры и т.д.
Эта кнопка размещает на форме обычную кнопку. В свойствах кнопки в поле Формула пишется имя процедуры, которая будет запущена при нажатии на кнопку.
Эта кнопка размещает на форме флажок. В свойствах флажка в поле формула пишется имя процедуры, которая будет запущена при установке или снятии флажка.
Эта кнопка размещает на поле переключатель. Переключатели имеют смысл, когда их несколько, в этом случае пользователь производит выбор между несколькими вариантами. Чтобы переключатели заработали, нужно сделать следующее: для первого переключателя установить в свойствах флажок "Первый в группе". Далее проверить, чтобы порядок обхода элементов был точно в том порядке, в котором следуют переключатели (Действия => Настройка порядка обхода). Типичный камешек для новичков.
Эта кнопка размещает на форме список значений. При этом по имени списка можно обращаться к нему из модуля (объект СписокЗначений). Можно добавлять значения в список, удалять значения и делать все другие операции, возможные для объекта СписокЗначений.
Эта кнопка размещает на форме поле со списком значений. При этом также создается объект СписокЗначений. Обратите внимание что лучше задать БОЛЬШУЮ ВЫСОТУ этого элемента управления, чтобы список раскрывался. Типичный камешек для новичков.
Обычная рамка. Можно визуально объединить несколько элементов управления. Служит для удобства пользователя.
Текстовое поле. Если в поле Формула вписать имя функции, то при каждом обновлении формы 1С будет вызывать вашу функцию и ее результат будет отображаться в этом поле. Кстати, если щелкнуть на эту кнопку и затем щелкнуть на табличной части справочника, документа или журнала, тогда мы создадим текстовую колонку. Она не будет сохраняться в базе данных, но у нее есть поле Формула, куда можно написать любое выражение. Очень полезная вещь для всяких информационных колонок. Типичная непонятность для новичков.
Поле для ввода данных. Для поля можно назначить любой тип данных, допустимый в 1С:Предприятие. В поле Формула можно написать имя процедуры, которая будет вызываться при изменении значения данного поля. ВНИМАНИЕ: для размещения на форме реквизитов справочников и документов пользуйтесь кнопкой: . Типичный камешек для новичков.
Эта кнопка размещает на форме таблицу значений. По имени таблицы значений к ней можно обращаться из модуля. Колонки и строки таблицы создаются программным способом (см. объект ТаблицаЗначений).
Для иерархических справочников на форме списка можно разместить дерево групп.
Эта кнопка размещает на форме картинку. Управление картинкой осуществляется программным способом (см. объект Картинка).
Эта кнопка размещает на форме поля для ввода данных, связанные с реквизитами справочников и документов. Только в этом случае, введенные данные будут сохраняться в базе данных.

Для удобства пользователей обязательно настройте последовательный порядок обхода элементов диалога! При интенсивном вводе информации желательно максимальное использование клавиатуры. Порядок обхода настраивается следующим образом. В меню Диалог снимаете флажок "Автоматический порядок обхода". Затем опять в меню Диалог щелкаете "Порядок обхода" и последовательно щелкаете на номерах элементах диалога в том порядке, в котором они должны быть. Порядок обхода можно также редактировать в меню Диалог => "Настройка порядка обхода".

Редактор программных модулей

У каждой экранной формы есть программный модуль. Кроме того, есть программные модули документов и глобальный модуль. В этих модулях располагается программа на встроенном языке 1С, который похож на Бейсик, но имеет свои особенности.

В программном модуле имеется синтаксическая подсветка. Разными цветами отображаются ключевые слова, переменные, комментарии и значения. Цветовая палитра настраивается в параметрах.

Поясним значения кнопок панели редактора программных модулей:

По тексту программы можно расставить закладки или пометки (marks), и перемещаться по ним. Полезная вещь для больших модулей в сотни и тысячи строк.
Кнопки сдвига блока текста вправо и влево. Становятся активными, когда выделено одна или несколько строчек.
Закомментировать / раскомментировать блок текста.
Кнопка автоформатирования текста программы. Нажимайте ее чаще и ваши программы будут красивыми! К сожалению, это не избавит их от всех ошибок, но их определенно станет меньше!

Открыть модуль в отладчике.
Проверить модуль на синтаксические ошибки.
Перейти к определенной строке модуля.
Открыть окно со списком процедур и функций модуля. (полезная вещь!)

При редактировании модуля также обратите свое внимание на верхние кнопочки. Там вы найдете кнопки поиска, вызова синтакс помощника и другие интересности, например, конструктуры. Чаще пользуйтесь синтакс-помощником - очень полезная вещь! Помните, что там можно искать слова! Более того, при редактировании модуля можно щелкнуть правой кнопкой на любом слове и выбрать там пункт "Найти в Синтакс-помощнике".

Шаблоны

Шаблоны предназначены для облегчения нелегкого труда программиста. Чтобы не писать длинные конструкции, а заменять их короткими словами. При этом при вводе такого сокращения оно автоматически заменяется на полную конструкцию.

Например, вам надоело постоянно писать "КонецЕсли;". Предлагаю придумать сокращение "ке". При вводе такого сокращения оно автоматически заменится на "КонецЕсли;" (даже с точкой запятой в конце!).

Можно сделать и более сложные вещи. Вы вводите слово "Пока". Понятно, что это начало цикла. При этом 1С запросит условие в диалоговом окне и далее сформирует всю конструкцию и даже поставит курсор, куда нужно, чтобы можно было продолжать писать программу.

Пока <ваше условие> Цикл

КонецЦикла;

Окно для редактирования шаблонов вызывается из Синтакс-помощника правой кнопкой или через Сервис => Настройка шаблонов.

Редактор печатных форм (макетов)

У отчетов есть печатные формы, это понятно. У документов также есть печатные формы, это тоже понятно. Но печатные формы могут быть и у других объектов: справочников, журналов документов, плана счетов и т.д. Фактически у любого объекта, у которого есть экранная форма, может быть одна или несколько печатных форм.

Печатные формы состоят из ячеек, в которых содержатся текст или формулы, что очень напоминает Microsoft Excel. Печатные формы формируются на встроенном языке 1С при помощи вывода секций. В печатной форме может не быть секций вообще, тогда можно вывести или все, или ничего. Но в большинстве случаев нужно выводить какую-то повторяющуюся часть много раз, например список сотрудников, список товаров и т.д. Секции могут горизонтальными и вертикальными.

Поясним значения кнопок панели редактора печатных форм:

Рисование линий, прямоугольников, размещение на печатной форме текстовых надписей, картинок, диаграмм. Редко используемые кнопки на самом деле.
Кнопка перехода в режим выбора рисунков.
Кнопка объединения нескольких ячеек в одну.
Кнопки создания/уничтожения вертикальных и горизонтальных секций. Если выделить несколько строк, а затем щелкнуть на первую кнопку, то мы создадим горизонтальную секцию. Если выделить столбцы и щелкнуть на первую кнопку, то создадим вертикальную секцию. Для каждой секции нужно задать имя, по которому мы сможем обратиться к ней из модуля.

Остальные кнопки попробуйте сами:

Список секций таблицы.
Включение / выключение сетки.
Включение / выключение заголовков столбцов и строк.
Включение / выключение границ секций.
Включение / выключение режима "Только просмотр".
Фиксация строк или столбцов. При прокрутке таблицы эти строки / столбцы будут оставаться на экране.

У каждой ячейки есть свойства, которые вызываются правой кнопкой мыши:

Предлагаю вам изучить его методом научного тыка, по справке или по книжке "Администрирование и конфигурирование". Обратите внимание на поле Расшифровка, поскольку это очень важно и часто используется при программировании на 1С.

Администрирование базы данных

В меню Администрирование вы найдете следующие пункты:

Ведение списка пользователей | Редактирование списка пользователей, установка паролей, задание интерфейса и набора прав для каждого пользователя. Список пользователей, работающих с базой данных в данный момент времени можно посмотреть в Мониторе пользователей.
Сохранить данные | Сохранение конфигурации и данных в архив (создание резервных копий). В этом режиме определенные файлы упаковываются в zip-архив. Если вы работаете с SQL-версией, то для сохранения данных применяйте пункт "Выгрузить данные". Нажимайте эту кнопку почаще и ваши данные никогда не пропадут полностью.
Восстановить данные | Восстановить конфигурацию и данные с резервной копии, созданной в предыдущем режиме.
Выгрузить данные | Сохранение конфигурации и данных в архив. В этом режиме вся база данных сохраняется в особый файл "dat", который затем упаковывается в zip-архив.
Загрузить данные | Восстановить конфигурацию и данные с резервной копии, созданной в предыдущем режиме.
Настройка журнала регистрации | Каждое действие пользователя регистрируется в журнал регистрации. Здесь можно настроить фильтр для этого журнала. Сам журнал регистрации можно посмотреть в Мониторе пользователей.
Тестирование и исправление ИБ | Тестирование и исправление информационной базы. Нажимайте эту кнопку почаще для профилактики и для исправления ошибок.
Кодовая страница таблиц ИБ | Установка кодовой страницы файлов DBF.
Распределенная ИБ | Доступно, если у вас установлена компонента "Управление распределенными базами данных (УРБД)".

Загрузка измененной конфигурации

Обычно пользователи спокойно работают с базой данных, пока вы вносите какие-то изменения в свою локальную копию. Потом вы загружаете измененную конфигурацию в рабочую базу и пользователи начинают испытывать блаженство от ваших изменений.

Объединение конфигураций

Когда нужно сохранить некоторые особенности оригинальной конфигурации, то применяют этот режим. При этом анализируются различия между конфигурациями и настраивается режим объединения. Это все очень важно и все это нужно будет изучить.


Конструкторы | Учебник по 1С | mista.ru

Конструкторы

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Конструкторы
Назначение конструкторов
 Виды конструкторов 		1С версия 3000 года:
Юзер: Хочу базу данных!
Конструктор: Готово!
Юзер: Хочу, чтобы работала! (отладка)
Конструктор: ОК!

Назначение конструкторов

Конфигуратор системы 1С:Предприятие включает набор Конструкторов — вспомогательных инструментов, облегчающих и ускоряющих создание типовых элементов конфигурации. Конструктор «ведет пользователя за руку» по этапам создания объекта метаданных, снабжая подсказками и позволяя, если необходимо, возвращаться к предыдущим этапам и переопределять ранее заданные параметры.

Конструкторы позволяют создать объект метаданных (справочник, документ), помогают написать программу или запрос на встроенном языке 1С, формируют макет отчета (секции таблиц и т.д.).

Пользуйтесь конструкторами, но не забывайте, что то же самое можно сделать "ручками". Иногда это труднее, но позволяет сделать ВСЕ, на что способна 1С. Это примерно так же, как знать HTML и знать Dreamweaver. С помощью Dreamweaver создавался этот сайт, но иногда приходилось подправлять "ручками" HTML-код. Такая совместная работа конструктора и человека неимоверно эффективна! Для простых задач можно пользоваться конструкторами. Для сложных задач или для реализации некоторых "изюминок" приходится стучать по клавиатуре. Такова селяви, как любят говорить русские.

Виды конструктуров

Конструкторы объектов метаданных — вспомогательные инструменты, облегчающие создание объектов метаданных системы 1С:Предприятие.

Конфигуратор включает конструкторы:

· справочника;
· документа;
· журнала документов;
· отчета;
· вида субконто;
· журнала расчетов.

Конструктор печати предназначен для облегчения процесса создания печатной формы справочника (элемента и списка), документа и журнала документов.

Назначение Конструктора макета отчета — автоматическое создание шаблона печатной формы объекта метаданных.

Назначение Конструктора бухгалтерских запросов — автоматическое создание отчета или алгоритма обработки для получения бухгалтерских итогов в одном из нескольких возможных разрезов.

Конструктор запросов облегчает разработку модулей, в которых используется механизм запросов системы 1С:Предприятие. Конструктор запросов позволяет сформировать текст нового запроса в полуавтоматическом режиме, последовательно заполняя выдаваемые на экран диалоги.

Конструктор ввода на основании предназначен для создания процедуры ввода на основании в модуле формы документа.

Конструктор движений регистров помогает создать в модуле документа оперативного учета алгоритм формирования изменений в регистрах, которые необходимо выполнить при проведении данного документа;

Конструктор формирования операции упрощает оформление в модуле документа бухгалтерского учета бухгалтерской операции генерируемой этим документом.


DBF-файлы | Учебник по 1С | mista.ru

DBF-файлы

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / DBF-файлы

Чтение файла DBF
Запись в файл DBF
Работа со структурой файла DBF
Работа с удаленными записями
Работа с индексами

Чтение файла DBF

В данном случае, мне кажется, что проще написать программу и прокомментировать ее, чем делать что-то еще. Вы уже такие продвинутые, раз добрались до этой главы! Я горжусь вами!

Файл = создатьОбъект("XBASE"); //создаем ссылку на файл DBF
Файл.ОткрытьФайл("catalog.dbf"); //открываем файл на диске
Файл.КодоваяСтраница(1); //задаем кодировку: 0 - windows, 1 - DOS

Если Файл.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
........Сообщить("Не удалось открыть файл!");
КонецЕсли;

Файл.Первая();
              //позиционируемся на первой записи
Пока Файл.ВКонце()=0 Цикл //пока не дошли до конца, крутим
              цикл
.......НомерЗаписи = Файл.НомерЗаписи(); //получаем номер
              текущей записи
.......НазвТовара = Файл.NAME; //получаем значение поля
.......Цена = Файл.ПолучитьЗначениеПоля("PRICE");
              //так тоже можно, но чуть медленнее
.......Файл.Следующая(); //переходим на следующую запись
КонецЦикла;

Файл.Последняя(); //позиционируемся на первой записи
Пока Файл.ВНачале()=0 Цикл //пока не дошли до начала, крутим цикл
.......НазвТовара = Файл.NAME;
.......Цена = Файл.PRICE;
.......Файл. Предыдущая(); //переходим на предыдущую запись
КонецЦикла;

Для н = 1 По Файл.КоличествоЗаписей() Цикл //здесь все понятно, по-моему
......Файл.Перейти(н); //позиционируемся на определенной записи
.......НазвТовара = Файл.NAME;
.......Цена = Файл.PRICE;
КонецЦикла;

Файл.ЗакрытьФайл(); //не забывайте пожалуйста

Запись в файл DBF

Файл = создатьОбъект("XBASE"); //создаем ссылку на файл DBF

//определяем структуру файла
//Синтаксис: ДобавитьПоле(<Название>,<Тип>,<Длина>,<Точность>)

Файл.ДобавитьПоле("NAME","S",50,0);
Файл.ДобавитьПоле("PRICE","N",10,2);

Файл.СоздатьФайл("catalog.dbf"); //создаем файл физически

СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлемент()=1 Цикл
.......Файл.Добавить();
.......Файл.NAME = СпрТовары.Наименование;
.......Файл.УстановитьЗначениеПоля("PRICE",СпрТовары.Цена)
              //так тоже можно;
.......Файл.Записать();
КонецЦикла;

Файл.ЗакрытьФайл(); //не забывайте пожалуйста

Работа со структурой файла DBF

Например, создадим файл, идентичный по структуре исходному.
//При этом применяется метод ОписаниеПоля, который возвращает характеристики поля с указанным номером
//синтаксис: ОписаниеПоля(<НомерПоля>,<НазваниеПоля>,<Тип>,<Длина>,<Точность>)

Файл1
              = СоздатьОбъект("XBASE");
Файл2 = СоздатьОбъект("XBASE");

Файл1 = ОткрытьФайл("file1.dbf");

Для н = 1 По Файл1.КоличествоПолей() Цикл
........НазвПоля = "";
........Тип = "";
........Длина = 0;
........Точность = 0;
........Файл1.ОписаниеПоля(н,назвПоля,Тип,Длина,Точность);
........Файл2.ДобавитьПоле(назвПоля,Тип,Длина,Точность);
КонецЦикла;

Для работы с файлом DBF неизвестной структуры часто применяются следующие методы:
ПолучитьЗначениеПоля(<ИмяПоля>);
УстановитьЗначениеПоля(<ИмяПоля>,<значение>);

Работа с удаленными записями
Файлы DBF устроены таким образом, что удаление записи не приводит к физическому удалению записи из файла. Запись просто помечается на удаление и пропускается при переборе. Таким образом размер файла остается прежним. Чтобы физически удалить все помеченные на удаление записи нужно применить метод Сжать. Средства встроенного языка позволяют работать с такими записями, перебирать их и даже отменять пометку на удаление.

Файл.ПоказыватьУдаленные(1);
Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
......Если Файл.ЗаписьУдалена()=1 Тогда
............Файл.Восстановить();
......КонецЕсли;
......Файл.Следующая();
КонецЦикла;

Файл.Первая();
Пока Файл.ВКонце()=0 Цикл
......Если Файл.PRICE < 1000 Тогда
............Файл.Удалить();
......КонецЕсли;
......Файл.Следующая();
КонецЦикла;

Файл.Сжать(); //удалить записи физически

Можно удалить все записи в файле одним движением. При этом они физически удаляются и не могут быть восстановлены.
Файл.ОчиститьВсе();

Стоит еще отметить про метод Очистить(), что он очищает все поля текущей записи. Атрибуты, соответствующие полям типа "строковый" приобретают значение «пустая строка», числовой — 0, логический — 0, дата — «пустая дата».

Работа с индексами

Для организации упорядочивания содержимого файла БД и поиска в ней по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл БД может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам. Индексы хранятся в индексном файле. Индексный файл может содержать информацию более чем об одном индексе. Рекомендуется для одного файла DBF иметь один индексный файл, в котором хранятся все индексы для этого файла.

Каждый индекс имеет наименование, признак уникальности, выражение индекса и фильтр. Наименование индекса используется для идентификации индекса. Выражение индекса и фильтр представляют собой написанные на специальном языке выражения, вычисление значения которых для каждой записи позволяет определить ее место при упорядочивании и необходимость помещения ее в упорядоченный список (индекс может содержать упоминание не обо всех записях таблицы, а только об удовлетворяющих выражению фильтра). Уникальный индекс (имеющий установленным признак уникальности) позволяет иметь в индексе ссылки на записи только с различным значением индексного выражения.

Основное правило: индекс нужен, чтобы быстро искать нужную запись.

DBF-ФАЙЛ
Индекс по фамилии

Физ. номер записи | Фамилия
1 | Иванов
2 | Абдулов
3 | Барабанов
4 | Мирнов
5 | Раскольников
6 | Комаров

Фамилия | Физ. номер записи
Абдулов | 2
Барабанов | 3
Иванов | 1
Мирнов | 4
Комаров | 6
Раскольников | 5

Нужно быстро найти Комаров. В неупорядоченном исходном файле искать его можно только последовательным перебором всех записей, что будет очень долго при большом числе записей. В индексе найти Комарова можно очень быстро, поскольку индекс отсортирован по полю Фамилия. При этом мы узнаем физический номер записи в файле DBF и производим прямое позиционирование на нужную запись.

После
              создания структуры базы данных можно добавить индексы следующим
              образом:
//Синтаксис: ДобавитьИндекс(<Название>, <Выражение>,
              <Уникальность>, <Убывание>, <Фильтр>)

Файл = СоздатьОбъект("XBase");
Файл.ДобавитьПоле("NAME", 1, 19, 3);
Файл.ДобавитьПоле("PRICE", 2, 25, 0);
Файл.ДобавитьИндекс("IDXCODE", "CODE",
              1, 0, "");
Файл.ДобавитьИндекс("IDXNAME", "NAME",
              0, 0, "");
Файл.ДобавитьИндекс("IDXNAMECODE", "NAME+CODE",
              0, 0, "");
Файл.СоздатьФайл("mydb.dbf", "mydb.cdx");

//1-й вариант
Файл.ТекущийИндекс("IDXNAME");
Файл.Найти("Иванов",0); //передается значение и
              режим поиска

//2-й вариант
Файл.ТекущийИндекс("IDXNAMECODE");
Файл.Ключ.NAME = "Иванов";
Файл.Ключ.CODE = 123;
Файл.НайтиПоКлючу(0);

//после сбоя рекомендуется заново переформировать все индексы
Файл.Переиндексировать();

В 1С существует специальный язык для задания выражений и фильтра индекса. Подробнее о нем, смотрите в документации на встроенный язык.


Диаграммы | Учебник по 1С | mista.ru

Диаграммы

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Диаграммы

Диаграмма предоставляет удобное графическое представление некоторого набора данных, чаще всего результатов каких-либо изменений. 1С предоставляет собственный (надо сказать, приятный) инструмент такого графического представления - объект "Диаграмма". Область диаграммы состоит из нескольких частей: область построения (там создается рисунок), заголовка (надписи над рисунком), легенды (расшифровки меток серий). В диаграмме имеются серии (т.е. наборы значений) и точки, из которых состоят серии (см. рис.1).

Создание диаграммы

Диаграмма вставляется в таблицу печатной формы с помощью пункта Вставить рисунок меню Таблица. Далее необходимо сделать следующие действия: определить тип диаграммы (гистограмма, график, круговая и т.п.), настроить внешний вид составных частей диаграммы, а затем описать процедуру "наполнения" данными при выводе печатной формы. Пройдемся поподробнее по каждому из этих действий.

Задание типа диаграммы

Для отображения разных наборов данных имеются более или менее удачные типы диаграмм. Задача программиста при конфигурировании определить тип будущей диаграммы, и задать его при форматировании области построения (контекстное меню области - закладка Тип диаграммы). Задав тип и закрыв окно форматирования, можно увидеть пример построенной диаграммы.

Настройка внешнего вида диаграммы

Для того чтобы включить режим форматирования областей диаграммы, необходимо выбрать пункт Изменить подменю Объект: 1С. V7. Диаграмма меню Действия (тое же пункт есть в контекстном меню диаграммы). Каждая из составных частей диаграммы в режиме редактирования имеет пункт контекстного меню Формат области … Настройка внешнего вида состоит из выбора заливки, рамки, цвета и шрифта текста и т.п. Там же можно определить, например, сетку для области построения. После завершения форматирования достаточно щелкнуть по любой ячейке таблицы, чтобы выключить режим форматирования.

Наполнение данными диаграммы

Диаграмма как объект системы 1С принадлежит таблице, в которую она вставлена. Обращение к объекту происходит в момент вывода на печать таблицы (метод Вывести()) или секции таблицы (метод ВывестиСекцию()), в которую вставлена диаграмма. Для того, чтобы при обращении были выполнены некоторые действия по подготовке данных для диаграммы, в свойствах объекта на закладке "Текст" необходимо указать строку вызова соответствующей процедуры, передав ей в качестве параметра контекст диаграммы как текущего объекта таблицы. Строка может выглядеть, например, так:

ОбработкаДиаграммы(Таб.ТекущийОбъект)
где: ОбработкаДиаграммы - имя процедуры, Таб - имя выходной таблицы (должна быть предварительно создана методом СоздатьОбъект()).

В модуле описывается процедура с идентификатором, через который будет производиться к контексту диаграммы:

Процедура СформироватьДиаграмму(Диаграмма1)
где Диаграмма1 - идентификатор, в который передается контекст объекта Диаграмма. Все методы объекта записываются через точку после идентификатора.

Основы программирования

Изменение заголовка таблицы

Диаграмма1.Заголовок = "Поступления от покупателей";

Работа с сериями диаграммы

//установим количество серий. Каждая при этом получит свой номер.
Диаграмма1.КоличествоСерий(3); // так у нас будет три серии
//однако если в другом методе будет передана серия с большим номером,
//количество серий будет автоматически увеличено.

КолСерий = Диаграмма1.КоличествоСерий();
// а так переменной КолСерий будет передано текущее количество серий

// так мы зададим имя "Рубли" серии № 1
Диаграмма1.УстановитьИмяСерии(1, "Рубли");

// установим
              цвет серии № 2
// этот метод не обязательный, как впрочем и некоторые другие
Диаграмма1.ЦветСерии(2, 35, 67, 90);
// установили: 35 единиц красной компоненты, 67 - зеленой, 90 -
              синей

//можно установить имена серий автоматически: Серия1, Серия2, и т.д.
Диаграмма1.АвтоУстановкаИменСерий(1);
//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.

Работа с точками диаграммы

//установим
              количество точек, скажем, 8 штук
Диаграмма1.КоличествоТочек(8);
//однако если в другом методе будет передана тока с большим номером,
//количество точек будет автоматически увеличено.

// метод может возвратить текущее количество точек
КолТочек = Диаграмма1.КоличествоТочек();

// можно установить имя любой точки
Диаграмма1.УстановитьИмяТочки(7, "7 точка");

//можно установить имена точек автоматически: 1, 2, 3, и т.д.
Диаграмма1. АвтоУстановкаИменТочек(1);
//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.

Передача значений точкам серий

Это самый важный метод диаграммы. Он устанавливает значение серии <НомерСерии> в точке <НомерТочки> равным <Значение> с возможностью последующей расшифровки. Все параметры, кроме параметра <Расшифровка> должны быть числовыми выражениями.
Синтаксис:

УстановитьЗначение(<НомерТочки>,<НомерСерии>,<Значение>,<Расшифровка>)

<Расшифровка> - параметр не обязательный, может иметь любой тип. Это значение, которое будет передано предопределенной процедуре ОбработкаЯчейкиТаблицы при двойном щелчке мышью на точке диаграммы. Так можно получать расшифровки точек диаграммы. Удобная штука!

Два вспомогательных метода диаграммы

Запрет перерисовки может ускорить работу системы во время наполнения таблицы данными.

Диаграмма1.Обновление(0);
//то же выражение, но с флагом 1 разрешит перерисовку

Очистка всех установленных значений имен и количеств точек, серий, диаграммы делается так:

Диаграмма1.Очистить();

Пример использования диаграммы в 1С: Бухгалтерия

Процедура СформироватьДиаграмму(Диаграмма1)

// Блокируем
                обновление, пока обрабатываются данные
Диаграмма1.Обновление(0);
Диаграмма1.Заголовок = "Поступления от покупателей";
Диаграмма1.УстановитьИмяСерии(1, "Рубли");
Диаграмма1.АвтоУстановкаИменТочек(1);

// Заполним диаграмму значениями
БухИт = СоздатьОбъект("БухгалтерскиеИтоги");

Бухит.ВыполнитьЗапрос(НачКвартала(РабочаяДата()),
КонКвартала(РабочаяДата()),"60.1",,,1,"Неделя","С");

 БухИт.ВыбратьПериоды();
А =
                1;
// дебетовые обороты по счету 60.1 покажут поступления
// денег от покупателей
Пока БухИт.ПолучитьПериод() = 1 Цикл

Диаграмма1.УстановитьЗначение(А, 1, БухИт.ДО());
А = А +1;

КонецЦикла;

// после наполнения данными перерисовываем
Диаграмма1.Обновление(1);

КонецПроцедуры

Результат работы процедуры на рис.2:


Документы | Учебник по 1С | mista.ru

Документы

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Документы
Назначение документов
Основы программирования
Экранные формы
Создание и проведение
Номер и нумераторы
Дата, время и позиция
Точка актуальности
 Последовательности

Автор главы: Вадим Русаков

Сегодня Ельцин весь день проработал с документами:
он еще раз просмотрел свой паспорт и свидетельство о рождении.

Назначение документов

Документы предназначены для хранения основной информации о всех событиях, происходящих на предприятии, и, разумеется, имеющих смысл с точки зрения экономики. При помощи документов отражаются и платежи с расчетного счета, и операции но кассе, и кадровые перемещения, и движения по складу, и прочие подобные события.

В процессе конфигурирования настраивается произвольное количество видов документов. Типичными примерами видов документов являются такие документы, как "Платежное поручение", "Счет", "Приходная накладная", "Расходная накладная", "Накладная на внутреннее перемещение", "Приходный кассовый ордер" и так далее. Каждый вид документа предназначен для отражения своего типа событий. Это определяет его структуру и свойства, которые описываются в конфигурации.

Документы играют центральную роль для основных механизмов, реализуемых компонентами системы. В системе 1С:Предприятие документ является основной учетной единицей. Каждый документ содержит информацию о конкретной хозяйственной операции и характеризуется своим номером, датой и временем. Дата и время - наиболее важные характеристики документов, так как позволяют устанавливать строгую временную последовательность совершения операций. Все документы (вне зависимости от вида) образуют единую последовательность. Фактически, эта последовательность отражает последовательность событий - так, как они происходили реально. Внутри даты последовательность документов определяется их временем, при этом время документа является не столько средством отражения реального (астрономического) времени ввода документа, сколько средством, позволяющим четко упорядочить документы внутри одной даты.

Данные, вводимые в документ (реквизиты документа), обычно содержат информацию о происшедшем событии: например, в накладной - информацию о том, с какого склада, каких товаров и сколько отгружено; в приказе о приеме на работу - информацию о сотруднике, оклад, другие сведения. Кроме собственно записи, для документа весьма важным свойством является его проведение. При проведении документ может отразить зафиксированное им событие в механизмах, реализуемых компонентами. Например, если установлена компонента "Бухгалтерский учет", документ может записать бухгалтерскую операцию, отразив в виде проводок в бухгалтерском учете информацию, содержащуюся в документе.

Состав документа

С точки зрения программиста, у документа есть экранная форма -- Диалог. Именно его видит пользователь на экране. Также у документа обычно есть одна или несколько бумажных форм -- Таблиц. С помощью Таблиц документ печатается на бумаге. Поведение документа определяется с помощью встроенного языка 1С. На языке записывается, что документ делает в системе, как он формирует бумажный бланк и как он себя ведет на экране.

Документ обычно имеет печатную форму. Печатная форма полностью формируется средствами встроенного языка 1С, что придает большую гибкость программе. Это одна из причин ошеломляющего успеха системы 1С:Предприятие. Печатная форма документа - это фактически отчет, формируемый обычно из формы открытого документа и содержащий сведения из этого документа. Чтобы научиться формировать печатные формы, вам нужно изучить главу Отчеты (объект "Таблица").

У документа может быть несколько шаблонов печатных форм. Средствами встроенного языка (метод ИсходнаяТаблица) задается тот шаблон печатной формы, который будет использоваться.

Шаблоны печатных форм (таблицы) могут быть общие. Это дает возможность использовать один шаблон для печати нескольких видов документов. Т.е. общая таблица является глобальной для конфигурации и может быть использована в любом модуле. Примером из типовой конфигурации может являться шаблон печатной формы "Отчет о движении документа", который используется разными модулями конфигурации

Проведение документа

Некоторые документы могут проводиться. С точки зрения пользователя, "провести" документ означает "пустить его в дело". С точки зрения программиста, при проведении документа сработает модуль проведения документа (процедура ОбработкаПроведения). Именно там определяются все действия, выполняемые при проведении документа. Например, при проведении документа "Приказ о приеме на работу" сработает модуль этого документа, который в справочник Сотрудники добавит нового сотрудника.

Реквизиты документа

Каждый вид документа может иметь неограниченное количество реквизитов в шапке и в многострочной части. Для документа создается форма ввода — экранный диалог. При настройке для документа задаются также общие характеристики: длина номера документа, условия поддержки уникальности номеров и другие. Все документы характеризуются номером, датой и временем.

Термин "шапка" — достаточно условный и может относиться не только к реквизитам документа, которые физически находятся в верхней части бумажного бланка документа. Поэтому, в наиболее общем случае, реквизитом заголовочной части будет считаться любой реквизит, который встречается в документе только один раз. Табличная часть документа представляет собой список однотипных строк с информацией. Например, в уже упоминавшемся счете на оплату табличная часть — это перечень товаров или услуг, подлежащих оплате. Помимо наименований, табличная часть документа может содержать также разнообразную дополнительную информацию — стоимость товаров или услуг, количество, объем, вес и многое другое. В большинстве случаев табличная часть используется для формирования общей суммы документа. Структура документа в системе 1С:Предприятие 7.7 может содержать только одну табличную часть.

При разработке документов в Конфигураторе может быть создано необходимое количество общих реквизитов документов. Такие реквизиты, будучи созданными один раз, становятся доступными для всех документов: общие реквизиты можно размещать в формах документов, к значениям общих реквизитов можно обращаться из встроенного языка системы 1С:Предприятие. Работая с системой 1С:Предприятие, пользователь может выполнять отбор документов в журналах по значениям общих реквизитов документов

Журналы документов

Все документы хранятся в журналах. Журнал документов -- это электронный аналог обычной бумажной папки. На экране журнал выглядит как таблица, строки которой являются документами. Например, вы можете создать журнал Приказы кадровые, который будет включать документы "Приказ о приеме на работу", "Приказ об увольнении", "Кадровое перемещение". С этим журналом будет работать пользователь-кадровик. Или можно создать отдельный журнал для банковских документов, куда войдут документы "Платежное поручение" и др.

Журналы документов предназначены для просмотра документов. Каждый вид документа может быть отнесен к определенному журналу. Сам журнал документов не добавляет новых данных в систему, а служит только как средство просмотра списка документов одного или нескольких видов. Для документов разных видов можно указывать один журнал, что позволяет произвольным образом группировать документы в журналах. Назначенный документам журнал можно менять. Например, может быть создан журнал «Складские документы», который будет содержать все приходные накладные и накладные на внутреннее перемещение. Назначенный документам журнал можно менять.

Для журнала могут быть определены графы журнала, для удобства просмотра реквизитов различных видов документов, отнесенных к данному журналу. Для журнала может быть описано несколько форм его визуального представления.

Для работы с документами могут использоваться специально созданные общие журналы. От «обычных» журналов документов их отличает возможность отбора документов по значению, указанному пользователем.

Журналы в системе 1С могут быть трех видов: Обычный, Общий и Дополнительный. Обычный журнал предназначен для хранения документов определенных видов. Документ также может быть включен в дополнительный журнал, при этом документ будет зарегистрирован сразу в двух журналах. Дополнительных журналов может быть несколько. Общий журнал показывает документы всех видов.

У журнала документов есть экранная форма, где можно настраивать отображаемые колонки. Можно создавать дополнительные колонки, которые будут отображать информацию из документов. Например, в журнале ПриказыКадровые удобно сразу видеть, к какому сотруднику относится каждый документ, для этого создается Графа журнала Сотрудник

Сравнение документов с другими объектами

Объект | Сходства | Различия
Константы | хранят значения, сохраняются в базе данных | Документ хранит не одно значение, а событие хозяйственной деятельности предприятия, кроме того событие порождает изменение состояния данных. Документ обязательно имеет дату и время, может содержать табличную часть, хранит множество данных различных типов, которые могут быть связаны с данными других объектов. Константы не имеют печатной формы.
Справочники | сохраняется в базе данных, имеет реквизиты, справочники могут быть подчиненными друг другу Могут иметь печатные формы | Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, имеет дату и время. Справочники, в отличие от документов могут быть многоуровневыми, иметь периодические (привязанные к дате) реквизиты.
Перечисления | хранится в БД, хранит список значений | Перечисление может хранить только список значений, который задается разработчиком в режиме Конфигуратор. Не имеют печатной формы. Не редактируются пользователем.
Таблица значений | имеет строки и колонки (не хранится в БД) | ТаблицаЗначений предназначена для временного хранения промежуточных данных в памяти компьютера, возникающих во время работы программы, и удаляется, когда работа с ней закончена. Документ записывает все данные в БД. Таблицы значений не могут быть подчиненными друг другу. Не имеют печатной формы.
Список значений | хранит список значений (не сохраняется в БД) | Представляет собой временный набор данных, так же как и таблица значений. Не имеют печатной формы.
Отчеты | Имеет печатные формы | Отчет обычно считывает данные, хранящиеся в БД и формируются печатные формы для вывода данных в нужном виде на экран или на принтер.

Основы программирования

Ссылка на документ
Для работы с документом из какого-нибудь модуля требуется сначала создать ссылку на этот документ.

ДокПрием = СоздатьОбъект("Документ.ПриемНаРаботу");
ДокУвольн = СоздатьОбъект("Документ.ПриказОбУвольнении");

Создание, сохранение и проведение документа

ДокПрием.Новый();
ДокПрием.ФИО = "Иванов Иван Иванович";
ДокПрием.Оклад = 5000;
ДокПрием.Записать();

//программное проведение документа
ДокПрием.Провести();

Поиск документа

ДокПрием.НайтиДокумент(Док);
ДокПрием.НайтиПоНомеру(123)

Удаление документа

ДокПрием.Удалить(0); //пометка на удаление
ДокПрием.Удалить(1); //непосредственное удаление

//можно проверить, помечен ли документ на удаление
//функция возвращает 1 - если помечен, 0 - если нет
Пометка = ДокПрием.ПометкаУдаления();

Перебор документов

ДокПрием.ВыбратьДокументы(дата1, дата2); //можно задать период выборки
Пока ДокПрием.ПолучитьДокумент()=1 Цикл
......<действия с текущим документом>
КонецЦикла;

Табличная часть документа
Перебор строк, добавление и удаление строк табличной части документа..

//перебор строк табличной части
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
            ...
КонецЦикла;

//добавление строки
Док.НоваяСтрока();
Док.РеквизитТаблЧасти = Значение;

//удаление строки
Док.УдалитьСтроку();

Экранные формы

Форма журнала документов

Каждый документ представляется в журнале документов отдельной строкой. Журнал содержит колонки, состав которых настраивается программистом. Кроме того, форма журнала документов может содержать любые другие элементы управления: кнопки, переключатели, информационные поля. Они могут быть сверху, снизу или сбоку.

Интервал журнала

В журнале документов можно установить интервал. Тогда он будет показывать только те документы, у которых дата попадает в этот интервал. Для установки интервала предусмотрена специальная кнопка на панели инструментов журнала. Кроме того, интервал можно установить программно методом УстановитьИнтервал

Графы журнала
В конфигураторе можно настраивать графы журнала (колонки). Например, в приведенной выше форме графа Сотрудник отображает ФИО сотрудника, для которого был сделан документ

Отбор, закладки отбора

В журнале документов можно программно или вручную установить отбор, тогда журнал будет показывать только нужные пользователю документы. Для установки отбора вручную предназначена специальная кнопка на панели инструментов журнала. Отбор можно установить по общим графам документов, а также по виду документов. Нельзя установить отбор по двум критериям одновременно. Отбор возможен только в ОБЩИХ журналах! Для упрощения процедуры отбора могут быть использованы закладки. Для этого используется метод ЗакладкиОтбора.

Предопределенные процедуры
Такие процедуры вызываются системой 1С при наступлении определенных событий в форме журнала документов. Фактически это обработчики событий.

Предопределенная процедура | Описание
ПриУстановкеОтбора() | Срабатывает при установке отбора кнопкой на панели инструментов или выбором закладки отбора. Здесь можно проверить права доступа или сделать что-нибудь еще.
ПриУстановкеИнтервала() | Предопределенная процедура при установке интервала журнала.
ПриВыбореСтроки(ФлагОбработки) | Срабатывает при двойном щелчке на документе или при нажатии ENTER. Режим обработки выбора строки предопределенной процедурой ПриВыбореСтроки включается при помощи метода Форма.ОбработкаВыбораСтроки(1).

Сортировка
ВНИМАНИЕ. Сортировка в журнале документов по произвольной графе невозможна!

Поиск документа в журнале
Кнопка "Поиск по номеру" (см. панель инструментов формы журнала документов) + набор первых символов.

Форма документа

Для пользователя содержимое документа представляется в экранной форме документа:

Табличная часть выглядит как обычная таблица, где столбцы - реквизиты табличной части документа. При создании документа в конфигураторе можно визуально настроить вид формы, размещение реквизитов и определить в свойствах формы, будет ли отображаться панель инструментов, можно будет пользователю ли изменять размер формы и т.п.

Предопределенные процедуры.

Для обслуживания работы действий с документами в системе 1С имеется большое количество предопределенных процедур. Однако, прежде чем приступить к описанию последних, сделаю важное пояснение. Документ как объект конфигурации содержит ДВА РАЗНЫХ программных модуля.

1. Один их них (Модуль документа) запускается при интерактивном или программном выполнении некоторых важных действий: проведение, отмена проведения, удалении проведенного документа, архивации записей журнала расчетов, порожденных документом. Фактически вышеприведенные действия сопоставляются с соответствующими предопределенными процедурами модуля документа. Операторам модуля доступны все реквизиты документа, но не доступны реквизиты экранной формы документа.

Предопределенные процедуры, принадлежащие модулю документа:

Предопределенная процедура
Описание
ОбработкаПроведения(Знач) | Обработка проведения. В теле описываются подготовка данных реквизитов документа, бухгалтерских итогов к формированию операции, а также свойства этой операции (Корреспондирующие счета, Субконто и т.п.). Здесь же описываются движения регистров оперативного учета, если документ в них участвует. Выполнение проведения система самостоятельно заключает в транзакцию, поэтому не употребляйте операторов, ожидающих отклика пользователя и, вообще, постарайтесь минимизировать подготовку проведения, передав, по возможности, часть этой работы в модуль формы. В переменную Знач передается значение, указанное в методе Провести() при его работе. Параметр не обязательный.
ОбработкаУдаления Проведения()

При отмене проведения документа (удалении проведенного документа) системой автоматически удаляются его проводки и движения регистров. Тем не менее, если при проведении совершались еще какие-то действия, то отменять их нужно в теле данной процедуры. Например, если при проведении исходя из бухгалтерских итогов рассчитывалась построчная итоговая сумма, то при распроведении её нужно очищать:

Процедура ОбработкаУдаленияПроведения()

Если ВыбратьСтроки() = 1 Тогда // Обратите внимание

Пока ПолучитьСтроку() = 1 Цикл

Сумма = 0; // Сумма - реквизит документа ***

КонецЦикла;

КонецЕсли;

КонецПроцедуры

*** Пример доступности контекста документа в модуле документа
АрхивироватьДокумент() | Вызывается при смене расчетного периода журнала расчетов "вперед". Требуется описывать, если документ порождает записи журнала расчетов.

2. Модуль формы запускается при каждом открытии формы документа. В его контексте доступны все реквизиты документа и реквизиты формы. Кроме предопределенных процедур модуля формы, там можно разместить вспомогательные процедуры и функции, вызываемые, например, экранными кнопками. Не путайте: предопределенные процедуры модуля документа нельзя размещать в модуле формы, и наоборот!

Предопределенная процедура
Описание
ВводНового(ПризнакКопирования, ОбъектКопирования)

Вызывается при создании интерактивном создании нового документа пользователем. Процедура обычно содержит предустановки значений некоторых реквизитов при создании нового документа или операторы управления видом экранной формы. ПризнакКопирования - имя переменной, которую система установит в "0", если введен просто новый документ, и в "1", если документ скопирован (через F9, например). При этом в Переменную ОбъектКопирования будет передан объект, с которого скопировали. Копирование не следует путать с вводом на основании.

Процедура ВводНового(Копирование)

Если ИмяПользователя() <> "Бухгалтер" Тогда

Предупреждение("Вам не позволено создавать этот документ!");

СтатусВозврата(0); Возврат; //Новый документ не будет создан

КонецЕсли;

Если Копирование = 1 Тогда

Возврат;

КонецЕсли;

КонецПроцедуры

ВводНаОсновании(Основание)

Выполняется при вводе нового документа на основании другого. В переменную Основание передается контекст документа-основания, т.е. теперь вы можете обратиться к его реквизитам через эту переменную:

СуммаДоплаты=Основание.СуммаСверху; //Свой реквизит принимает значение реквизита документа-основания.

Помните, что после обработки этой процедуры система не сохранит информацию о том, что новый документ введен на основании другого. Для реализации такой возможности вы должны иметь во вновь создаваемом документе реквизит типа "Документ", куда можно записать ссылку на документ-основание. Лучше сделать её доступной пользователю, чтобы он потом имел возможность выбрать другой документ-основание.
ПриЗаписи() | Выполняется при записи (перезаписи) документа. Имейте ввиду, что операторы этой процедуры выполняются ДО фактической записи документа в базу. Это, так сказать, подготовительная работа.
ПриВводеСтроки()

Вызывается при вводе пользователем новой стоки многострочной части документа. Такой операцией, например, можно отменить ввод новых строк, если в документе нельзя вводить строки вручную (можно добавить какое-либо условие):

Процедура ПриВводеСтроки()
.......СтатусВозврата(0);
КонецПроцедуры
ПриНачалеРедактированияСтроки() | Обрабатывает начало изменения существующей (!) строки (когда пользователь ручками вводит или изменяет значения реквизитов табличной части). Исходя из примера, описанного выше для процедуры ПриВводеСтроки(), догадайтесь, как можно запретить редактирование стоки?
ПриРедактированииНовойСтроки() | Похожая на предыдущую, но с тем отличием, что вызывается только при редактировании ВНОВЬ созданной строки.
ПриОкончанииРедактированияСтроки (ФлагНовойСтроки) | ФлагНовойСтроки - имя переменной, в которую будет записана 1, если окончен ввод НОВОЙ строки, соответственно - 0, если закончено редактирование ИМЕВШЕЙСЯ. Процедура вызывается, когда пользователь "дезактивирует" строку мышкой, нажатием Enter, или Esc (кроме случая, когда отказываются от редактирования новой строки).
ПриУдаленииСтроки() | Действие, которое будет обработано данной процедурой, очевидно исходя из имени процедуры. Что еще добавить?
ПриИзмененииПорядкаСтрок (ФлагДействия) | ФлагДействия - имя переменной, которая станет "-1", если строка поднимается вверх, станет "1" при перемещении строки вниз, и станет "0", если изменяются номера строк, например, при сортировке. А что при этом сделать - это уже ваша фантазия (моей не хватает :).

Не забывайте о том, что имеются предопределенные процедуры, общие для любых форм системы 1С, такие как ПриОткрытии(), ПриЗакрытии() и т.д. Их подробное описание здесь не приводится, дабы не перегружать главу о документах.

Печатные формы документа

Документ обычно имеет печатную форму. Печатная форма полностью формируется средствами встроенного языка 1С, что придает большую гибкость программе. Это одна из причин ошеломляющего успеха системы 1С:Предприятие. Печатная форма документа - это фактически отчет, формируемый обычно из формы открытого документа и содержащий сведения из этого документа. Чтобы научиться формировать печатные формы, вам нужно изучить главу Отчеты (объект "Таблица"). Все операторы, которые выполняют вывод на печать данных отчетов, точно так же позволяют печатать данные из документов.

У документа может быть несколько шаблонов печатных форм. Средствами встроенного языка (метод ИсходнаяТаблица) задается тот шаблон печатной формы, который будет использоваться.

Шаблоны печатных форм (таблицы) могут быть общие. Это дает возможность использовать один шаблон для печати нескольких видов документов. Т.е. общая таблица является глобальной для конфигурации и может быть использована в любом модуле. Примером из типовой конфигурации может являться шаблон печатной формы "Отчет о движении документа", который используется разными модулями конфигурации.

Маленькая хитрость: если вы создали свою печатную форму для какого-либо документа, или "заточили" типовую, рекомендую сохранить её в отдельном файле печатной формы (*.mxl) тогда при переходе с релиза на релиз вам не будет нужды переделывать таблицы документа, достаточно будет в операторе ИсходнаяТаблица() процедуры печати вставить ссылку на внешний файл.

Создание и проведение документа

Новый документ в системе 1С можно ввести различными методами:
Интерактивно - этот способ можно реализовать по-разному.

1. Вариант первый. Пользователь выбирает Пункт меню Документы и в подменю щелкает по названию необходимого документа. Что происходит дальше. Документу присваивается номер, устанавливаются дата, начинается обработка операторов предопределеннной процедуры модуля формы документа ВводНового(), после чего открывается экранная форма с вызовом процедуры ПриОткрытии(). Новый документ создается в памяти, а для того, чтобы он был записан в базу, необходимо нажать кнопку Записать.

2. Разновидностью этого варианта является создание документа из открытой формы журнала документов. Второй вариант предполагает создание нового документа путем копирования такого же. При копировании документу присваивается новый номер, а все реквизиты заполняются данными из скопированного документа. Вот почему, если в процедуре ВводНового() вы заполняете некоторые реквизиты при создании нового документа, то необходимо в начале этой процедуры задать проверку факта копирования, для того, чтобы не сбить значения реквизитов.

3. При третьем варианте новый документ создается на основании существующего документа другого вида. В такой ситуации вместо процедуры ВводНового() будет вызвана процедура ВводНаОсновании(). В ней нужно описать, какие реквизиты нового документа будут заполнены значениями из документа-основания. Естественно, что заполняемые реквизиты нового документа должны иметь тот же тип, что и соответствующие реквизиты-источники. Пример заполнения расходной накладной на основании счета:

Процедура ВводНаОсновании(ДокОсн)

РасчетныйСчет
                = ДокОсн.РасчетныйСчет;
МестоХранения = глЗначениеПоУмолчанию("ОсновнойСклад");
Контрагент = ДокОсн.Контрагент;
Договор = ДокОсн.Договор;
ВариантРасчетаНалогов = ДокОсн.ВариантРасчетаНалогов;

ДокОсн.ВыбратьСтроки();
Пока ДокОсн.ПолучитьСтроку() = 1 Цикл

НоваяСтрока();
Товар = ДокОсн.Товар;
Количество = ДокОсн.Количество;
Цена = ДокОсн.Цена;
Сумма = ДокОсн.Сумма;
НДС = ДокОсн.НДС;
Всего = ДокОсн.Всего;

КонецЦикла;

КонецПроцедуры

При вызове процедуры происходит установка значений некоторых полей и флажков накладной значениями из счета. Сначала мы заполнили реквизиты шапки, а затем организовали цикл считывания строк табличной части счета операторами ВыбратьСтроки() и ПолучитьСтроку(). В этом же цикле на каждую строку основания вводится и заполняется новая строка накладной (команда НоваяСтрока()).
Доступ к реквизитам счета осуществляется через переменную ДокОсн, которая является параметром процедуры. Как мы помним (см. описание предопределенных процедур модуля формы документа), в неё передается контекст документа-основания.

4. Программный способ - для него в языке 1С предусмотрены специальные команды. Можно при записи расходной накладной сформировать документ СчетФактура:

СФ = СоздатьОбъект("Документ.СчетФактура");
СФ.Новый();
СФ.ВариантОтправки = 1;
СФ.НомерДок = НомерДок; // Счет-фактура будет с тем же номером и
              датой, что и
СФ.ДатаДок = ДатаДок; // накладная. Но так можно и не делать, есть
              же автонумерация
СФ.Контрагент=Контрагент;
СФ.Грузополучатель=Контрагент;

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СФ.НоваяСтрока();
// Реквизит "Товар" док-та СчетФактура имеет неопределенный тип
СФ.НазначитьТип("Товар", "Справочник.Номенклатура");
СФ.Товар=Товар;
Если ПустоеЗначение(Товар.СтранаПроисхождения) = 0 Тогда

// а это обращение к реквизитам справочника "Номенклатура"
СФ.СтранаПроисхождения = Товар.СтранаПроисхождения;

Иначе

СФ.СтранаПроисхождения = "Россия";

КонецЕсли;

СФ.Количество=Количество;
СФ.Цена=Цена;
СФ.Сумма=Сумма;
СФ.НДС=НДС;
СФ.Всего=Сумма+НДС;

// Здесь накладная становится основанием счета-фактуры через специальный
                реквизит
СФ.ДокументОснование = ТекущийДокумент();

КонецЦикла;
СФ.Записать();
СФ.Провести(0, "Программно");

Обратите внимание, что сначала создается документ как объект, а затем вводится новый документ. Последующие действия похожи на действия при вводе на основании. Не забудьте, если вы создаете или изменяете документ программно, его необходимо записывать. И пожалуйста, не пытайтесь использовать метод Провести() в теле предопределенной процедуры ОбработкаПроведения() модуля документа!

Проведение документа

Оператор Провести() в приведенном выше примере выполнит проведение документа. При проведении будет вызвана предопределенная процедура ОбработкаПроведения(). Вторым реквизитом передается в обработку проведения значение ("Программно"), по которому процедура ОбработкаПроведения() узнает о программном выполнении проведения. Это может быть простая строка или число, её задача - только обозначить факт программного проведения.

Если вы работаете с уже существующим документом, то метод Провести() перепроведет документ. А с помощью метода Проведен() можно узнать, проведен ли какой-либо документ:

Если Док.Проведен() > 0 Тогда

Сообщить( "Документ № " + Док.НомерДок + " проведен");
…………… // Какие-то действия, которые нужно сделать с проведенным документом

КонецЕсли;

О создании операций и проводок при проведении документов читай раздел Операции и проводки главы Бухгалтерия.

Транзакции

При создании множества документов или для ускорения работы можно заключить цикл в транзакцию. При этом реальная запись документов произойдет только по команде ЗафиксироватьТранзакцию(). На время транзакции блокируется для других пользователей запись и проведение документов.

СписаниеМатериалов
              = СоздатьОбъект("Документ.ТребованиеНакладаная");
НачатьТранзакцию();
Для Ном = 1 По 100 Цикл

СписаниеМатериалов.Новый();
…………………
// Заполнение реквизитов
СписаниеМатериалов.Записать();
СписаниеМатериалов.Провести();

КонецЦикла;
ЗафиксироватьТранзакцию();

Напомню, что предопределенная процедура ОбработкаПроведения() самостоятельно открывает транзакцию для проведения, однако есть маленькая особенность документа, созданного функцией СоздатьОбъект(). Дело в том, что про программном проведении созданных документов не выполняется автоматическая предварительная запись, и для того, чтобы при любых сбоях и ошибках сохранялась согласованность данных документа и его движений (операций) следует объединять запись и проведение документа в одну транзакцию.

Установка периодического реквизита справочника при проведении документа

Простым примером такого действия является установка нового оклада сотруднику в справочнике Сотрудники при проведении, например, штатного расписания.

Процедура ОбработкаПроведения()

УстановитьРеквизитСправочника (Сотрудник, "Оклад", НовыйОклад, ДатаДок);

КонецПроцедуры

Здесь Сотрудник - значение реквизита документа типа "Справочник", через него в справочнике позиционируется нужный элемент, а "Оклад" - периодический реквизит соответствующего элемента. Этот оператор можно использовать только в предопределенной процедуре ОбработкаПроведения(). Теперь при просмотре истории периодического реквизита вы увидите кроме самого значения, ещё и дату установки (соответствует дате документа), и документ, который установил данное значение.

Номер документа и нумераторы

Номер документа

При интерактивном или программном создании нового документа ему автоматически присваивается новый уникальный номер. Его можно получить или установить какой-нибудь другой с помощью атрибута НомерДок:

Док = СоздатьОбъект("Документ.Счет");
Док.Новый();
Сообщить("Документу был автоматически присвоен № " + Док.НомерДок);
Док.НомерДок = "000013";
Сообщить("Установлен новый № " + "000013");

Префикс номера

Если вы используете распределенную базу или желаете, чтобы документы обозначали пользователя, который их создал, полезно пользоваться префиксами - одним или двумя символами, которые подставляются перед собственно номером документа, но при этом "входят" в номер. Не забывайте, что префикс должен быть строковым ("Сч-" или "01", или "1-"), а в свойствах документа должен быть установлен строковый тип номера.

Док = СоздатьОбъект("Документ.Счет");
ПрефДок = Лев(ИмяПользователя(),2);
Док.ПрефиксНомера(ПрефДок + "-");
Док.Новый();

Этот метод изменяет префикс по умолчанию, или возвращает текущее значение префикса, если использовать метод без параметра. А вот другая возможность:

Док = СоздатьОбъект("Документ.Счет");
ПрефДок = Лев(ИмяПользователя(),2);
Док.Новый();
Док.УстановитьНовыйНомер(ПрефДок + "-"); // такая
              нумерация работает очень корректно

В отличие от предыдущего этот метод устанавливает (а точнее переустанавливает введенный по умолчанию при исполнении метода Новый()) новый номер с указанным префиксом.

Что такое нумератор?

Нумератор представляет собой объект метаданных, описывающий правила нумерации документов: тип и длина номера документа, его периодичность, необходимость контроля уникальности. Основное назначение нумератора - обеспечить возможность сквозной нумерации документов разного вида, для чего таким документам назначается одинаковый нумератор.

Периодичность. Этот реквизит устанавливает 2 важные характеристики нумератора: пределы контроля уникальности номеров документов и период повторяемости номеров. Если включен признак контроля уникальности номеров (см. ниже), "Периодичность" устанавливает, в каких пределах осуществлять этот контроль. Например, если установлено "В пределах дня", то уникальность номеров документов будет контролироваться в пределах суток: на следующие сутки номера документов могут повторяться. При включенной автоматической нумерации система будет присваивать очередной порядковый номер каждому новому документу. После завершения периода, установленного в реквизите "Периодичность", нумерация документов начнется с 1.

Длина. Устанавливает максимальную длину номера документа. Не размахивайтесь без нужды, "длинный" номер снижает производительность работы.

Тип. Группа "Тип" позволяет выбрать тип значения для номера документа - числовой или текстовый. Выбор текстового типа номера бывает полезен, когда используется сложная система нумерации документов, и номер документа может включать, помимо цифр, также буквы и символы-разделители.

Контроль уникальности. Если эта опция включена, то при вводе нового документа его номер проверяется на уникальность в пределах, установленных в реквизите "Периодичность".

Дата, время и позиция документа

Дата документа

Дата создания (или записи) - обязательный атрибут любого документа. Через него можно получить или назначить дату, с которой будет записан документ:

Док = СоздатьОбъект("Документ.РасходнаяНакладная");
Док.Новый();
Если Док.ДатаДок = '01.01.02' Тогда
..........Сообщить("С Новым Годом!");
КонецЕсли;

Время документа

Кроме даты, позиция документа обозначается временем. С ним можно поступать так:

Часы = 0;
Минуты = 0;
Секунды = 0;
Док.ПолучитьВремя(Часы, Минуты, Секунды); // Прочтем время
Если Часы > 21 Тогда

Предупреждение("Хватит работать по ночам!
|Документ будет помещен в конец дня");
Док.АвтоВремяКонецДня(); // документ запишется на 10 сек позже последнего

ИначеЕсли Часы < 8 Тогда

Предупреждение("Никто не оценит!
|Документ будет записан в начало дня");
Док.АвтоВремяНачалоДня();// документ запишется на 10 сек раньше первого

ИначеЕсли Вопрос("Записать документ с текущим временем?", 4) = 7 Тогда // ответ "Нет"

ВвестиЧисло(ЧасУст, "Укажите час, с которым будет записан данный документ",2,0);
Док.УстановитьВремя(ЧасУст, Минуты, Секунды); // запишется с этим временем

Иначе

Док.АвтоВремяТекущее(); // документ запишется с текущим временем

КонецЕсли;

Позиция документа

В крупных многопользовательских системах часто возникает ситуации, когда новые документы записываются почти одновременно, внутри одной секунды. Но все равно не возникает никаких накладок, т.к. документы разделяются внутри секунды с помощью позиции документа. Она представляет собой специальное 32-х символьное выражение, которое можно прочитать с помощью специального метода:

ПозДокумента = Док.ПолучитьПозицию(); // только чтение !

Позиция имеется только у записанного документа.

Точка актуальности (ТА)

Этот страшный зверь - точка актуальности

Точка актуальности (ТА) - это "текущий" момент времени в хронологии документов, на который регистры оперативного учета содержат текущие значения своих ресурсов. Это значит, что когда вы обращаетесь к регистрам, информация из них выдается именно на момент, куда установлена точка актуальности. Если вам нужны итоги на другой момент, должен запускаться временный расчет. ТА помогает системе определить текущее наличие средств, соответствующее, например, реальному количеству товаров на складе. Все документа, проведенные до ТА, считаются уже произошедшими хозяйственными операциями, если документ проведен после ТА, он не будет учтен при определении остатков регистра. Такая ситуация редка, т.к. документы оперативного учета после проведении автоматически устанавливают ТА на время своего проведения (режим управления ТА при проведении документов настраивается на закладке Оперативный учет окна Параметры меню Сервис режима 1С: Предприятие).

Программное управление ТА

Предопределенная процедура | Описание
ПолучитьТА() | Возвращает строку, содержащую дату и время ТА. Примерный вид результата этой функции: 09.04.02 08:30:12 Отдельно дату или время ТА можно с помощью функций ПолучитьДатуТА() и ПолучитьВремяТА()
ПолучитьПозициюТА() | Позиция ТА имеет такое же представление, как и позиция документа (см. выше). Посмотреть ее можно с помощью данной функции.
ПолучитьДокументТА() | Можно получить документ, который стоит на точке актуальности. Функция возвратит ссылку на этот документ:ПослДок = ПолучитьДокументТА();Сообщить("Последний документ имеет номер " + ПослДок.НомерДок);
УстановитьТАна(Полож) | Устанавливает ТА на начало даты или перед документом. Полож - переменная типа "Дата" или ссылка на документ. Метод можно использовать только в монопольном режиме.
УстановитьТАпо(Полож) | Метод похож на предыдущий, только устанавливает ТА на конец даты или после документа.
АвтоВремяПослеТА() | Метод документа изменяет предыдущую (в том числе и пользовательскую) установку автоматического времени нового документа так, чтобы он записывался со временем после ТА.
ПроводитьПослеТА(ФлагНеПров, ФлагПров) | Метод модуля формы документа изменяет предыдущую (в том числе и пользовательскую) установку проведения и перепроведения документа относительно ТА. Если флаги имеют значение "-1", документ будет проводиться (или перепроводиться) всегда задним числом (до ТА). Флаг с единицей установит режим проведения (перепроведения) в реальном потоке времени (т.е. после ТА). Для флага ФлагНеПров имеется дополнительное нулевое значение. В этом случае при проведении режима будет выбирать пользователь.
ИтогиАктуальны() | Метод предопределенной процедуры ОбработкаПроведения() модуля документа определяет актуальность итогов на момент проведения документа. Если метод возвратил значение "1", можно обращаться к текущим итогам с помощью методов объекта "Регистр" или с помощью запроса без указания конечной границы. Если метод возвратил "0", то необходимо запускать временный расчет регистра.

Последовательности

Последовательности документов - специальный механизм системы 1С, который позволяет поддерживать правильность итогов и данных проводок документов. Если документы при проведении использует данные бухгалтерских итогов или итогов регистров, то в случае, если задним числом каким-то образом меняются итоги, необходимо автоматически перепроводить все документы, которые использовали измененные итоги. Вот надзором за этим делом и занимаются Последовательности. При описании последовательности в конфигураторе, описывается, какие изменения регистров или бухгалтерских итогов по счетам будут влиять на последовательность, и какие документы входят в эту последовательность (это могут быть документы разного вида). Граница последовательности (ГП) - позиция последнего проведенного с "правильными" итогами документа. Если какие-то итоги изменяются задним числом, граница последовательности отодвигается назад на последний документ, при проведении которого использовались последние "нетронутые" итоги, а все документы, проведенные на основе изменившихся данных итогов, окажутся после границы последовательности. Восстановление последовательности - значит перепроведение всех документов, начиная от границы последовательности, заканчивая точкой актуальности или рабочей датой. Для восстановления последовательности в пользовательском режиме необходимо вызвать пункт Проведение документов… меню Операции.

Методы последовательностей записываются через точку после полного имени последовательности:

Последовательность.УчетТоваров.ПринадлежитПоследовательности(ТекДокумент);
Здесь "УчетТоваров" - имя последовательности, заданной в конфигурации.

Программные методы последовательностей

Метод | Описание
ПринадлежитПоследовательности(Докум) | Определяет, принадлежит ли документ (или вид документа) данной последовательности. Возвращает "1", если принадлежит, "0" - если нет.
ПолучитьАтрибут(Имя) | Получить значение последовательности по строке с именем последовательности. Обычно применяется для передачи контекста данной последовательности в переменную.
ПолучитьПозицию(), ПолучитьДокумент() | Схожие между собой методы, первый возвращает строковую позицию границы последовательности (ГП), а второй - ссылку на документ, на котором стоит граница последовательности.
ПолучитьДату(), ПолучитьВремя(Ч,М,С) | Тоже подобные методы, первый возвращает дату, а второй - время границы последовательности (ГП), причем часы, минуты, секунды записываются в разные переменные.
Сравнить(Докум) | Очень удобный метод для определения положения документа (или даты) относительно ГП. В параметр Докум можно записать дату, документ или позицию документа. Возвращает "-1", если ГП раньше, "0" - если равны, и "1", если ГП позже.
Установить(Положение) | Принудительно устанавливает ГП в позицию, указанную переменной Положение. В эту переменную можно передавать документ, дату или позицию документа. Осторожнее со сдвигом "вперед", документы до новой точки автоматически не перепроводятся.
ВыбратьПоПоследовательности(ДатаНач, ДатаКон, Имя) | Открывает выборку документов с ДатаНач по ДатаКон, принадлежащих указанной Последовательности. В качестве дат так же можно использовать документы или их позиции.

Пример автоматической процедуры восстановления последовательности

 // получим
              границу последовательности
ПозицияНач = СформироватьПозициюДокумента (Последовательность.ОсновнаяПоследовательность.ПолучитьПозицию(),
              1);
Док = СоздатьОбъект("Документ");

// отберем док-ты посл-ти "ОсновнаяПоследовательность"
Док.ВыбратьПоПоследовательности(ПозицияНач, ПолучитьПозициюТА(),
              "ОсновнаяПоследовательность");
Пока Док.ПолучитьДокумент() = 1 Цикл

Док.Провести();
                // перепроводим документы
Сообщить("Восстановление последовательности "+Док);

КонецЦикла;


Приложения | Учебник по 1С | mista.ru

Приложения к Учебнику

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Приложения
- | Файл для скачивания | Размер | Описание
 | Учебник по 1С | 1,3 М | Сам! Самая последняя онлайн-версия располагается по адресу www.mista.ru/tutor_1c
 | Учебник по 1С (версия без картинок) | 130 К | Для тех, у кого плохой коннект. Изучайте 1С, устраивайтесь на работу и проводите себе домой выделенную линию!
 | Конфигурация "Мини-склад" | 15 К | Простейшая система складского учета для нескольких складов, которая позволяет приходовать и отпускать материалы, а также формировать отчет по остаткам материалов.
 | Конфигурация "Работёнка" | 30 К | Информационно-справочная система для хранения вакансий работодателей и резюме соискателей. Позволяет подбирать подходящие вакансии или резюме.
 | Конфигурация "Почтальон Печкин" | 30 К | Простейшая почтовая система для локальной сети предприятия для пользователей 1С. Позволяет пользователям писать друг другу письма и прицеплять к ним объекты 1С (элементы справочников и документы). Кроме того есть общий чат.
 | Конфигурация "Денежки" | 30 К | Простейшая система учета семейных доходов. Показывает текущий остаток в кошельке каждого члена семьи, а также доходы и расходы за период с разными группировками и фильтрами.
 | Конфигурация "Мини-библиотека" | 21 К | Простейшая система учета для библиотеки, которая позволяетт выдавать книги читателям, отслеживать задолженности читателя и формировать отчеты по совершенным операциям за заданный период.
 | Конфигурация "Доставочка" | 45 К | Простейшая учетная система для магазина с доставкой. Позволяет учитывать остатки товаров, оформлять заказы клиентов и формировать путевой лист для курьера.
 | Конфигурация "Мини-зарплата" | 82 К | Простейшая система расчета зарплаты. Минимальный кадровый учет, две категории сотрудников, учет невыходов, ввод премий, расчет подоходного налога с учетом налоговых льгот, отчетность по зарплате.
 | Конфигурация "Конкурент-магазин" | 115 К | Быстрая и простая конфигурация для сети магазинов. Идеальна для модели "Склад - сеть магазинов". Мощные аналитические отчеты. Автор Андрей Величко.
 | Конфигурация "Кадровый учет в строительстве" | 190 К | Простая, но достаточно мощная конфигурация для кадрового учета. Позволяет организовать прием на работу, увольнение сотрудников, кадровое перемещение, воинский учет, оформление отпусков, оформление больничных листов, ведение штатного расписания, отчеты по сотрудникам.
 | Описание задачи "Кадровый учет в строительстве" | 31 К | Когда-то это был курсовик.
 | Описание объекта "Метаданные" | 22 К | Распакуйте и поместите als-файл в каталог Program Files\1cv77\BIN и он будет подключен к Синтакс-помощнику.
 | Игра "Реверси" | 10 К | Замечательная интеллектуальная игра "Реверси". Реализована в виде внешнего отчета для 1С. Обязательно зайдите на сайт http://buhgames.chat.ru. Там еще много интересных игр на 1С.
 | Игра "Охота на лис" | 14 К | Простая игра, в которой вам предстоит проявить сообразительность и математический склад ума.


Доставочка | Учебник по 1С | mista.ru

Доставочка

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Доставочка

Постановка задачи
Объекты конфигурации
Справочники
Документ "Приход товара"
Документ "Заказ"
Документ "Снятие заказа"
Документ "Путевой лист"
Документ "Отчет курьера"
Отчет "Товары"
 Отчеты о доходах
Что можно скачать

- Драку на 50 человек заказывали?
- Нет, что вы!
- Оплачено!

Постановка задачи
Требуется создать простую учетную систему для магазина с доставкой на дом. Система должна учитывать остатки товаров, оформлять заказы от клиентов и формировать путевые листы для курьеров.

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
  • Клиенты
  • Товары
  • Курьеры
  • Районы
Документы
  • ПриходТовара
  • Заказ
  • СнятиеЗаказа
  • ПутевойЛист
  • ОтчетКурьера
Регистры
Регистр | Измерения | Ресурсы
Остатки (регистр остатков) | Товар | Количество
Заказы (регистр остатков) | Товар Клиент Заказ Цена ДатаДоставки | Количество Сумма
Доставка (регистр остатков) (хранит доставляемые в данный момент товары) | Товар Клиент Заказ Цена ДатаДоставки | Количество Сумма
Доходы (оборотный регистр) | Товар Клиент | Доход
Отчеты
  • Товары
  • Сводная таблица

Справочники

Обслуживаемая магазиномом территория делится на районы. При регистрации клиента указывается его название / ФИО, адрес, телефон и район, в котором он находится. В справочнике Курьеры перечислены фамилии курьеров или названия мобильных отрядов, осуществляющих доставку товаров покупателю. Справочник товары является иерархическим и содержит 3 уровня, т.е. товары могут быть объединены в группы. Для товара указывается цена, по которой он продается клиентам.

Приход товара

Экранная форма документа выглядит следующим образом:

При проведении документа производятся движения в регистре Остатки:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.Остатки.Товар
                  = Товар;
Регистр.Остатки.Количество = Количество;
Регистр.Остатки.ДвижениеПриходВыполнить();

КонецЦикла;

КонецПроцедуры

Заказ

Экранная форма документа выглядит следующим образом:

При проведении документа производятся движения в регистре Заказы:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.Заказы.Товар
                  = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Заказ = ТекущийДокумент();
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Количество = Количество;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеПриходВыполнить();

КонецЦикла;

КонецПроцедуры

Снятие заказа

Документ предназначен для отмены ранее сделанных заказов. Можно уменьшить количество заказанного ранее товара. Экранная форма документа выглядит следующим образом:

Пользователь указывает клиента, при этом автоматически заполняется табличная часть документа текущими заказами по данному клиенту. Пользователь указывает нужное количество товара в колонке "Снять".

При проведении документа производятся движения в регистре Заказы:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Если Количество > 0 Тогда

Регистр.Заказы.Товар
                    = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Заказ = Заказ;
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Количество = Количество;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеРасходВыполнить();

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Путевой лист

Данный документ является заданием для курьера, который доставляет товары покупателю. Экранная форма документа выглядит следующим образом:

Сначала пользователь указывает район, при этом автоматически заполняется табличная часть - формируется путевой лист. Программа просматривает все текущие заказы по данному району, дата доставки которых совпадает с датой путевого листа или просрочена. Пользователь может подредактировать доставляемое количество в колонке "Доставить" в связи с отсутствием товара на складе или тяжести груза для одного курьера.

После этого путевой лист распечатывается и проводится. Печатная форма путевого листа выглядит следующим образом:

При проведении документа совершаются движения в регистрах Остатки и Доставка:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

//доставляемые
                  товары
Регистр.Доставка.Товар = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Количество;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеПриходВыполнить();

//уменьшаются остатки по данному товару
Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Количество;
Регистр.Остатки.ДвижениеРасходВыполнить();

КонецЦикла;

КонецПроцедуры

Отчет курьера

Данный документ оформляет результат поездки курьера по путевому листу. Отмечается количество фактически доставленных товаров. Экранная форма документа выглядит следующим образом:

Пользователь указывает путевой лист, по которому отчитывается курьер. При этом автоматически заполняется табличная часть документа. Пользователь может подкорректировать колонку "Доставлено" в соответствии с фактически доставленным количеством товара. При установке флажка "Недоставленные товары возвращены на склад" товары из регистра Доставка переходят в регистр Остатки, т.е. курьер нам ничего не должен.

При проведении документа совершаются движения в регистрах:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Если Доставлено > 0 Тогда

Регистр.Доставка.Товар
                    = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Доставлено;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеРасходВыполнить();

Регистр.Заказы.Товар
                    = Товар;
Регистр.Заказы.Клиент = Клиент;
Регистр.Заказы.ДатаДоставки = ДатаДоставки;
Регистр.Заказы.Цена = Цена;
Регистр.Заказы.Заказ = Заказ;
Регистр.Заказы.Количество = Доставлено;
Регистр.Заказы.Сумма = Сумма;
Регистр.Заказы.ДвижениеРасходВыполнить();

Регистр.Доходы.Товар = Товар;
Регистр.Доходы.Клиент = Клиент;
Регистр.Доходы.Доход = Сумма;
Регистр.Доходы.ДвижениеВыполнить();

КонецЕсли;

Если Фл_ВозвратОстатков=1 Тогда

Если Доставлено < Заказано Тогда

Регистр.Доставка.Товар
                      = Товар;
Регистр.Доставка.Клиент = Клиент;
Регистр.Доставка.Цена = Цена;
Регистр.Доставка.Заказ = Заказ;
Регистр.Доставка.ДатаДоставки = ДатаДоставки;
Регистр.Доставка.Количество = Доставлено;
Регистр.Доставка.Сумма = Сумма;
Регистр.Доставка.ДвижениеРасходВыполнить();

Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Заказано - Доставлено;
Регистр.Остатки.ДвижениеПриходВыполнить();

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Отчет "Товары"

Данный отчет показывает текущую картину по товарам и оценивает дефицит товаров на указанный будущий период. Экранная форма диалога отчета выглядит следующим образом:

Пользователь может ограничить выборку конкретной группой товаров. Кроме того, пользователь указывает период времени в днях, за который учитываются заказы. Это позволяет заранее определить дефицитные товары и не допустить срыва поставок.

Пример работы отчета представлен ниже:

Дефицит определяется по формуле:

Дефицит = (Заказано - Доставляется) - Остаток;

Доходы

Определять доходы магазина можно по регистру Доходы с помощью отчетов СводнаяТаблица и ОтчетПоРегистру, разработанных фирмой КИНТ.

Что можно скачать

Скачать конфигурацию "Доставочка" (45К)


Охота на лис | Учебник по 1С | mista.ru

Охота на лис

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Охота на лис
Постановка задачи
Объекты конфигурации
Технические подробности
Домашнее задание
 Что можно скачать 		Взрослые отличаются от детей только ценой своих игрушек.

Постановка задачи

Требуется создать средствами 1С игру "Охота на лис". Правила игры следующие.

Цель игры состоит в том, чтобы как можно быстрее найти всех лис на игровом поле.
Игровое поле состоит из информационого и игрового полей.
Игрок имеет возможность открыть любую клетку, щелкнув ее левой кнопкой мыши. Если в клетке находится лиса, то она показывается.
Если лисы нет, в клетке появится цифра, которая указывает, сколько лис находится на горизонтали, вертикали и диагоналях клетки. Игра заканчивается после поимки всех лис.

Объекты конфигурации
Игра реализована в виде внешнего отчета (ert-файл). Поэтому игру можно подключить к любой конфигурации и доставить радость вашим пользователям!

Технические подробности

Игровое поле реализовано в виде множества кнопок на трех слоях формы. Текущая игровая ситуация хранится в массиве Поле[100]. Число 0 означает куст, 1 - скрытую лису, 2- пойманную лису, 3 - число. В процедуре ОбновитьПоле выводится игровое поле на форме в соответствии с этим массивом.

Кнопка Игра, вызывает процедуру Игра(), которая начинает новую игру: расставляет на поле лис с помощью функции СлучайноеЧисло(). Кстати, очень полезная функция, но 1С ее почему-то не реализовала. Наверное, думала, что в бухгалтерии "ничто не случайно".

При нажатии на кнопку с лисой вызывается процедура ЛисаПоле(), при нажатии на кнопку с кустом или скрытой лисой вызывается процедура КустПоле. Если на поле скрытой лисы не было, то отображается число лис же горизонтали, вертикали и диагоналях клетки. Это число подсчитывается процедурой КоличествоЗапеленгованныхЛис().

Если количество пойманных лис (переменная ПЛ) равняется количеству всех лис (переменная ВЛ), то игра заканчивается. Если ходов было сделано меньше, чем в рекорде, то победителю придлагается увековечить свое достижение (процедура Увековечить).

Домашнее задание

Заставьте компьютер играть в эту игру. Придумайте алгоритм для поиска всех лис за минимальное число ходов.

Что можно скачать

Скачать игру "Охота на лис" (14К)


Работенка | Учебник по 1С | mista.ru

Работенка

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Работенка

Постановка задачи
Объекты конфигурации
Справочник "Работодатели"
 Справочник "Соискатели"
 Справочник "Резюме "
 Справочник "Вакансии"
Обработка "Чистка базы"
 Что можно скачать

 Работа не волк - в лес не убежит.

Постановка задачи
Требуется создать простейшую информационно-справочную систему для трудоустройства. Система должна хранить список работодателей и соискателей. У каждого работодателя может быть несколько вакансий. У каждого соискателя может быть несколько резюме. Система должна позволять работодателям подбирать сотрудников, а соискателям помогать находить место работы.

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
  • Работодатели
  • Соискатели
  • Вакансии
  • Резюме
  • Должности
Перечисления
  • ВидОбразования
  • ГрафикРаботы
  • Пол
Обработки
  • ЧисткаБазы

Справочник "Работодатели"

Данный справочник будет содержать сведения о фирмах и индвидуальных предпринимателях, которые предлагают свои вакансии. При нажатии на кнопку Вакансии показывается список вакансий данного работодателя.

Справочник "Соискатели"

Данный справочник будет хранить сведения о соискателях, которые предлагают свои резюме. При нажатии на кнопку Вакансии показывается список резюме данного соискателя. У каждого соискателя может быть несколько резюме. Например, соискатель знает 1С и знает Photoshop, но указывать их в одном резюме - признак плохого тона. Себя надо позиционировать очень четко, потому что работодателей раздражают люди, которые знают все.

Справочник "Резюме"

Данный справочник будет содержать резюме соискателей. У каждого соискателя может быть несколько резюме. При нажатии на кнопку "Поиск подходящих вакансий" программа просматривает список вакансий и выбирает из них те, которые подходят для данного резюме.

Справочник "Вакансии"

Данный справочник будет содержать сведения о вакансиях работодателей. У каждого работодателя может быть несколько различных вакансий. Некоторые поля можно не заполнять, например График работы, Образование, Пол. Это означает, что работодателя не интересует данная характеристика. При нажатии на кнопку "Поиск подходящих резюме" программа просматривает список резюме и выбирает из них те, которые подходят для данной вакансии.

Обработка "Чистка базы"

Данная обработка находит вакансии и резюме, срок размещения которых истек, и помечает их на удаление.

Что можно скачать

Скачать конфигурацию "Работёнка" (30К)


Пошаговый пример | Учебник по 1С | mista.ru

Пошаговый пример

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Пошаговый пример

Простейший кадровый учет

Сейчас мы создадим мини-систему кадрового учета сотрудников предприятия. Она позволит принимать и увольнять сотрудников, а также работать с кадровыми документами.

Каждая конфигурация должна храниться в отдельном каталоге (папке).

1. Создайте новую папку на любом диске, например, "C:\Учебная"
2. Запустите 1С:Предприятие. Откроется список информационных баз.

1С:Предприятие может работать с несколькими базами данных на одном компьютере. Например, в одной базе ведется кадровый учет, в другой базе - учет товаров, в третьей - бухгалтерский учет для Фирмы А, в четвертой - бухгалтерский учет для фирмы Б.

3. Нажмите кнопку Добавить. Укажите имя информационной базы, как оно будет отображаться в списке баз, например "Учебная". Имя базы может быть произвольным, от него ничего не зависит.

4. В следующем поле укажите путь к папке, которую вы создали на 1 шаге. Нажмите кнопку "…", войдите в папку и нажмите Выбрать.

Папка может располагаться на локальном жестком диске компьютера, например "C:\Учебная" или на другом компьютере в сети, например, "\\SERVER\KADR". При этом должны быть предоставлены полные права доступа к этой папке (чтение, запись и т.д.).

5. Нажмите ОК. В списке информационных баз появится новая строка. Для ее редактирования можно нажать кнопку Изменить. Например, информационную базу перенесли в другое место или вы хотите задать другое название для информационной базы. Для удаления информационной базы из списка нужно нажать кнопку Удалить. При этом информационная база удаляется из списка, но не удаляется физически с диска.

6. Укажите режим запуска Конфигуратор.

1С может запускаться в четырех режимах:

  • Предприятие - режим использования информационной базы. В этом режиме работают обычные пользователи, вводят данные, печатают отчеты и т.д. В этом режиме нельзя редактировать структуру конфигурации.
  • Конфигуратор - режим конфигурирования (программирования). В этом режиме работают программисты, создают новые справочники, отчеты, пишут программные модули. Вводить данные в информационную базу в этом режиме нельзя.
  • Монитор - режим наблюдения за пользователями, работающими в данный момент с информационной базой. Все операции с информационной базой регистрируются в Журнале регистраций. В режиме Монитор можно получить протокол всех операций совершенных конкретным пользователем, над конкретным объектом, а также можно задать другие условия фильтра.
  • Отладчик - режим для программистов, когда у них что-то не ладится с программой. Здесь можно отследить как выполняется программа буквально по шагам. При этом программа выполняется в режиме Предприятие.

7. Нажмите ОК для запуска базы в режиме конфигуратор.

8. Так как в созданной папке пока ничего нет, то 1С спросит в каком формате будет храниться база данных: В файлах DBF или на SQL-Server Укажите формат "Файлы DBF" и нажмите ОК.

9. Запустится конфигуратор. Откройте дерево конфигурации, в котором мы будем работать очень часто. Для этого щелкните меню Конфигурация => Открыть конфигурацию или кнопочку [image]. Появится окно дерева конфигурации. Задайте ему нормальные размеры.

В этом окне представлены все объекты конфигурации, такие как справочники, документы, отчеты и т.д. Для раскрытия какой-то ветки нужно два щелкнуть на плюсике или два раза щелкнуть на ее названии.

Создание объектов конфигурации

10. Установите курсор на строку Справочники и щелкните кнопку [image] (или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников.

Конструктуры предназначены для помощи программисту в выполнении определенных действий. Только что мы увидели конструктор справочников. В 1С есть еще конструктур документов, конструктор отчетов, конструктор запросов и т.д. Все действия, которые делает конструктор, можно выполнить вручную, но возможно, что с конструктором будет быстрее. Если вам конструктор не нужен (или не нравится), тогда снимите флажок "Использовать конструкторы при создании новых объектов". В данном Учебнике мы все будем делать вручную, поскольку только так можно стать настоящим программистом и выжать из 1С все, на что она способна (или он? кстати, какого рода слово "1С". Это он, она или оно?).

11. Снимите флажок "Использовать конструкторы при создании новых объектов" и нажмите кнопку Отмена для закрытия конструктора. Он будет сопротивляться, но вы будьте настойчивы!

Потом вы всегда можете опять запустить конструктор из меню Конструкторы, но мы будем стараться делать все ручками.

12. Опять установите курсор на строку Справочники и щелкните кнопку [image] (или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников уже не откроется, а появится обычное окно для редактирования структуры справочника.

13. Задайте идентификатор справочника (имя), например сейчас мы создадим справочник "Должности".

Идентификатор справочника очень важен, поскольку он будет использоваться при программировании. Его нельзя будет исправить просто так, поскольку придется также исправить все места в программе, где используется этот справочник. Относитесь к идентификатору справочника очень серьезно. Идентификатор должен быть лаконичным, понятным, отражающим содержимое справочника, например: "Страны", "Сотрудники", "Товары" и т.д.

Заметьте, что общепринятым правилом является множественное число в имени справочника, но это не обязательно. Например, вы можете создать справочник "АдреснаяКнига". В идентификаторах объектов, а также в названиях переменных не может быть пробелов, но могут быть цифры и знак подчеркивания. Идентификатор не может начинаться с цифры. Правильное название объектов, переменных - признак хорошего стиля программирования и залог успеха. Будьте профессионалами в этом деле!

14. Задайте длину наименования 30 символов.

У каждого справочника есть уже заранее заданные два поля "Код" и "Наименование". Вы можете редактировать длину наименования, длину кода, а тажке тип кода: Числовой/Текстовый.

15. Закройте окно структуры справочника Должности.

14. На всякий случай сохраните конфигурацию, чтобы ваш труд не пропал даром, если вдруг отключится электричество или прямо сейчас наступит конец света.

1С обнаружит, что конфигурация абсолютно новая и у нее нет даже такой вещи, как словаря данных! Пусть создает этот словарь, если он ей очень нужен.

Нажмите Да.

Так как мы редактировали структуру информационной базы, то 1С попросит разрешение на реорганизацию информационной базы. В больших конфигурациях (программах) это может быть очень длительный и сложный процесс, у нас пока все просто.

Нажимаем Да.

1С проанализирует структуру базы и покажет окно со списком изменений.

Нажмите кнопку "Принять".

После реорганизации базы появится сообщение "Реорганизация информациии закончена ".

15. Создадим справочник Сотрудники. (Установите курсор на Справочники и щелкните кнопку Новый). Задайте имя справочника (идентификатор) "Сотрудники".

16. Задайте длину наименования 100 символов.

В наименовании у нас будет храниться ФИО сотрудника. Иногда бывают довольно длинные имена, например "Александровский-Петровский Александр Александрович".

17. В этом справочнике у нас будет еще одно поле (реквизит, атрибут) Должность. Список реквизитов сейчас пустой. Нажмите кнопку Добавить, откроется окно редактирования свойств реквизита. Кстати, реквизит, атрибут и поле - это в принципе одно и то же. Просто нужно привыкнуть к слову "реквизит".

18. Задайте имя реквизита "Должность". Укажите тип реквизита "Справочник.Должности", который мы создали раньше. Это говорит о том, что значения данного реквизита будут выбираться из справочника Должности. Нажмите ОК.

19. Создайте реквизит Оклад (тип Число, Точность 2 знака после запятой)

20. Создайте реквизиты ДатаПриема и ДатаУвольнения (тип Дата)

21. Сохраните конфигурацию (на всякий случай).

Теперь у нас есть два справочника и можно ввести некоторые данные.

22. Запустите 1С:Предприятие в режиме Предприятие. Это можно сделать прямо из Конфигуратора, нажав кнопку [image]. Появится окно 1С:Предприятие.

23. Откройте справочник Должности. Для этого щеклните меню Операции => Справочники => Должности. Откроется окно справочника.

Для более быстрого доступа к справочнику позже мы создадим меню, а пока только так.

24. Введите несколько должностей, используя кнопку [image] или клавишу INS. Например, Директор, Бухгалтер, Программист.

Заметьте, что коды присваиваются автоматически, хотя их можно редактировать. При этом необходимо соблюдать уникальность кодов. Параметры уникальности можно настраивать в конфигураторе, например можно ее вообще отключить, если она не нужна.

По умолчанию установлена сортировка по Наименованию. Это позволяет набрать первые буквы названия должности и курсор автоматически перейдет на нужную должность. Можно установить и другой тип сортировки: по коду или по реквизиту. Для этого нужно щелкнуть правой кнопкой и выбрать Сортировка. Мы этого делать не будем и оставим все, как есть.

25. Закройте справочник Должности и откройте справочник Сотрудники. (Щеклните меню Операции => Справочники => Сотрудники).

26. Заведите нескольких сотрудников. Например, Иванов - директор, Петров - Бухгалтер, Сидоров - Программист.

Заметьте, что при указании должности открывается справочник Должности. Для выбора должности вам нужно два раза на нее щелкнуть.

В реальной жизни принятие сотрудника на работу производится кадровым документом "Приказ о приеме на работу". Поэтому сейчас мы это организуем.

27. Закройте 1С:Предприятие и запустите базу в режиме Конфигуратор.

28. Теперь создайте новый документ "ПриемНаРаботу". (установите курсор на Документы и щелкните Новый). Задайте имя документа ПриемНаРаботу.

29. Добавьте реквизит шапки "Сотрудник", укажите ему тип значения Строка и длина 100 символов. Нажмите ОК.

У документа есть шапка и табличная часть. В шапке содержатся реквизиты, которые относятся к документу в целом, например НомерДок, ДатаДок и т.д. В табличной части содержатся строки. Например, один документ Накладная содержит информацию по нескольким товарам. Такая ситуация в 1С предусмотрена. (правда не предусмотрена ситуация, когда в документе есть две или даже несколько табличных частей)

Кстати, у любого документа уже есть два заранее заданных реквизита шапки "НомерДок" и "ДатаДок".

30. У документа должна быть удобная форма для ввода данных. Нажмите кнопку "Форма" в нижней части окна.

31. Так как мы сюда зашли в первый раз, то 1С предлагает автоматически создать форму документа.

Мы договорились все делать вручную, поэтому нажимаем Отмена.

32. Нам нужно создать форму следующего вида:

· Установите подходящие размеры формы.
· Разместите на форме текстовую надпись "Прием на работу". Для этого щелкните на кнопку [image] внизу и затем на форме.

Кстати, рядом с этой кнопкой есть и другие элементы управления, которыми мы будем пользоваться в дальнейшем: кнопки, поля, переключатели, флажки и т.д.

· Укажите размер шрифта побольше, это же все-таки заголовок. Для этого щелкните правой кнопкой на надписи, выберите Свойства, щелкните вкладку Шрифт, снимите флажок "Шрифт по умолчанию" и укажите размер шрифта 12, Можете еще что-нибудь указать, например Цвет, жирность и т.д. Не бойтесь экспериментировать, мы же пока только учимся. нажмите ОК.

· Добавьте поле НомерДок на форму. Для этого щелкните кнопку [image] появится окно. В нем установите флажок у реквизита шапки НомерДок, нажмите ОК и щелкните в каком-нибудь месте формы. Там появится поле НомерДок. Задайте ему размеры и перетащите в нужное место формы.
· Добавьте рядом текстовое поле с надписью "№".
· Аналогичным образом разместите на форме остальные реквизиты: ДатаДок, Сотрудник, Должность. Не забудьте рядом с ними разместить текстовые надписи.
· Кнопки ОК и Закрыть разместите по центру формы (по горизонтали). Для этого выделите их мышкой (обе одновременно) и щелкните кнопку [image]. Попробуйте там и другие кнопки ради интереса.

Теперь в этот документ можно будет вводить данные о новом сотруднике. Затем пользователь нажмет кнопку ОК и ваша программа должна добавить в справочник Сотрудники новый элемент (новую строку). При нажатии ОК документ сначала будет записан, а потом будет проведен.

Проведение документов - очень важное понятие. Провести документ для пользователя означает пустить его в дело. При проведении документа совершаются изменения в информационной базе: добавлются данные в таблицы, увеличиваются или уменьшаются остатки товаров на складе, создаются новые бухгалтерские проводки и т.д.

Что конкретно произойдет при проведении документа определяется программистом. При проведении выполнится предопределенная процедура ОбработкаПроведения(). Именно в этой процедуре программист пишет программу, которая и совершает все изменения в системе. Сейчас нам нужно до нее добраться. Она хранится в "Модуле документа".

Для открытия модуля документа закройте экранную форму документа. На экране останется окно структуры документа. Внизу есть кнопка "Модуль документа", вот на нее и нажмите. Откроется окно для редактирования текста программы.

Там уже есть процедура ОбработкаПроведения, но внутри нее пока ничего существенного. Напишите там следующий текст, пока не вникая в его смысл.

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.Новый();
СпрСотр.Наименование = Сотрудник;
СпрСотр.Должность = Должность;
СпрСотр.Оклад = Оклад;
СпрСотр.ДатаПриема = ДатаПриема;
СпрСотр.Записать();

Хотя, если присмотреться, то можно кое-что понять. Первая строка обращается к справочнику Сотрудники. Вторая строка создает новый элемент, пока пустой. Потом заполняются реквизиты справочника, данные берутся из документа и переносятся в справочник. И в конце происходит запись измененного элемента в справочник.

Кстати, часто начинающие программисты забывают вызвать Записать(). Не попадайте в эту ловушку! Если вы не вызовете метод Записать(), то все ваши изменения не сохранятся в базе.

Обратите внимание, что каждый оператор в языке 1С заканчивается символом ";" (точка с запятой). После слова КонецПроцедуры точки с запятой не, потому что это не оператор, а операторная скобка (есть такое понятие в 1С). Точки с запятой нет также после слов Цикл и Тогда, но после слов КонецЦикла и КонецЕсли обязательно ставьте точку с запятой. В данной программе мы не использовали ни циклы, ни условия.

Также обратите внимание как оформляются комментарии.
// это комментарий

Комментарии не учитываются компилятором и предназначены для человека, которому нужно разобраться в программе. Комментариев не должно быть слишком много и слишком мало. Программа сама по себе должна быть понятна, без комментариев. Но в сложных местах в комментариях можно пояснить логику работы программы. Написание комментариев и понятных программ - тоже признак хорошего тона. Будьте в этом деле профессионалами!

· Закройте окно модуля и окно структуры документа. Сохраните конфигурацию.

Теперь можно попробовать принять нового сотрудника по всей форме.
· Запустите 1С в режиме Предприятие.

Все документы хранятся в журналах документов. Может быть вы не обратили внимание, но для документа "ПриемНаРаботу" был задан журнал по умолчанию "Прочие". Потом мы создадим специальный журнал для всех кадровых документов, а пока будем пользоваться тем, что есть.

· Для открытия журнала документов Прочие щелкните Операции => Журналы документов => Прочие. Откроется журнал документов.

· Щелкните кнопку [image] или нажмите клавишу INS. Откроется форма документа "Прием на работу" для ввода данных. Номер документа присвоится автоматически, дата документа - сегодняшнее число.

· Введите все данные: ФИО сотрудника, укажите ему должность и оклад.
· Нажмите кнопку ОК. Сначала документ будет записан, а потом проведен. При проведении сработает процедура ОбработкаПроведения и в справочник Сотрудники добавится новая строка. Проверьте это.

Если вдруг выскочит ошибка, значит вы неправильно написали программу. Опять запускайте Конфигуратор и все перепроверяйте.

Можно сделать так, чтобы 1С проверяла программу на синтаксические ошибки автоматически при сохранении конфигурации. Для этого в Конфигураторе щелкните меню Сервис => Параметры и установите флажок "Проверять ошибки автоматически".

Заметьте, что отсутствие синтаксических ошибок не гарантирует того, что программа правильная. В ней по-прежнему могут быть ошибки. Такие ошибки могут выскочить при выполнении программы, а могут быть очень скрытые. Ошибки - главная беда программистов. Но еще большая беда - неправильное понимание требований заказчика.

Теперь организуем правильное увольнение сотрудников с помощью кадрового приказа.
· Создайте в Конфигураторе новый документ "Увольнение".
· Укажите, что он содержит реквизиты шапки "Сотрудник" тип "Справочник.Сотрудники и "Дата увольнения" тип Дата.
· Создайте для него удобную форму для ввода данных.

· Напишите следующий
              текст в модуле документа в процедуре ОбработкаПроведения():
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НайтиЭлемент(Сотрудник);
СпрСотр.ДатаУвольнения = ДатаУвольнения;
СпрСотр.Записать();

Первая строка создает ссылку на справочник Сотрудники. Вторая строка ищет в справочнике того сотрудника, который будет уволен. Следующая строка устанавливает ему дату увольнения. И последняя строка записывает сделанные изменения в справочнике.

Создадим журнал "КадровыеДокументы". Для этого установите курсор на "Журналы документов" в дереве конфигурации и щелкните Новый. Задайте имя журнала. Здесь больше ничего не трубуется.

Теперь откройте окно для редактирования структуры документа "ПриемНаРаботу". В верхней части окна измените журнал "Прочие" на журнал "КадровыеДокументы"

То же самое проделайте для документа Увольнение.
Сохраните конфигурацию на всякий случай.

Теперь создадим пользовательское меню. В окне конфигурации внизу есть вкладка Интерфейсы.

Для каждой категории пользователей программы может быть заведен свой собственный интерфейс. Интерфейс включает пункты меню и кнопки на панели инструментов. Например, кадровику необязательно залезать в зарплату сотрудников.

Создайте новый Интерфейс и назовите его Администратор. Интерфейс появится в списке интерфейсов.
Щелкните дважды на интерфейсе и выберите "Редактировать меню". Откроется окно редактора меню.

У него есть замечательная кнопка [image], которая автоматически создает все пункты меню. Сделаем исключение и воспользуемся помощью конструктора меню, потому что нам нужно создать обычное меню для доступа ко всем объектам без всяких заморочек. Если нужно сделать что-нибудь более интересное, например, добавить разделители, перегруппировать пункты меню, то это нужно будет делать вручную.

· Нажмите кнопку [image] и затем "Построить". Конструктур автоматически создаст все пункты меню.

· Меню можно сразу протестировать, как оно будет выглядеть для пользователя. Для этого нажмите кнопку "Пуск", появится тестовое окно. Посмотрите на меню и закройте тестовое окно.

· Кстати, вы можете попробовать научиться редактировать пункты меню. Смелее экспериментируйте. Например, перетащите пункт меню Кадровые документы в пункт Документы, а пункт Журналы документов удалите. Отделите журнал от документов разделителем. Мне кажется, так будет удобнее.

· Закройте редактор меню.

Сохраните конфигурацию и запустите ее. Проверьте работу документа Увольнение и пощелкайте меню.

На этом создание простейшей системы для кадрового учета завершено. Она позволяет принимать и увольнять сотрудников. Конечно, все очень неудобно. Уволенные хранятся вместе с работающими в одном списке. Реквизитов для хранения информации очень мало, нет печатных форм документов, нет кнопочек на панели инструментов, нет кадрового перемещения - куча пробелов в нашей системе. Но это же только простейшая кадровая система и она уже работает!

Для сравнения скажу, что написание такой же системы на другом языке программирования Visual Basic или Delphi займет в два-три раза больше времени и сил. Что бы там ни говорили недоброжелатели, но на 1С программы пишутся в несколько раз быстрее.


Конкурент-магазин | Учебник по 1С | mista.ru

Конкурент-магазин

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Конкурент-магазин

Описание конфигурации
 Ограничения
 Начало работы
 Работа с программой
 Что можно скачать

 - Почему новые русские ходят в магазины с двумя сотовыми?
- По одному сотовому они с братками советуются, а другим указывают, что им завернуть.

Описание конфигурации

Быстрая и простая конфигурация для сети магазинов.
Идеальна для модели "Склад - сеть магазинов".
Мощные аналитические отчеты.
Анализ расхода товара по складу, реализатору (по прибыли, по количеству)
Анализ поступления выручки торговых точек
Анализ остатков по складу и реализаторам
Анализ розничных цен
Импорт-экспорт единичных документов. Удобно перебрасывать документы из
одной программы в другую, если учет ведется в разных программах.
Учет товара по торговым точкам идет в розничных ценах.
Весь товарооборот идет через склад. Например переброс товара из
одной торговой точки в другую проходить в два этапа.
1 Возврат товара на склад (ДокументРеализатора-Возврат)
2 Отпуск товара реализатору (ДокументРеализатора-Расход)
Списать товар с торговой точки можно несколькими способами.
1. Списание суммой (СписаниеРеализатора)
2. Списание товаром (ДокументРеализатора-Списание)
3. Возврат на склад, потом списать со склада (ДокументРеализатора-Возврат)
Большинство отчетов вынесено во внешние отчеты. Исправлять и дорабатывать
отчеты можно без выбрасывания пользователей из программы 1с-Торговля.
В прайс-листе видны две колонки: остатки на складе и остатки реализатора.
При обновлении прайса в него заносится товар с не нулевыми остатками на складе.

Ограничения

Учет товара идет по беспартионной схеме, но есть динамический расчет партионности.
При больших объемах баз данных этот расчет может занять несколько минут.
Например в "Карточке оплаты" закрытие оплаты документов вычисляется динамически.
В справочнике Номенклатуры 2 уровня
Первый - для групп товара, второй для товара.
Это ограничение связано с построением некоторых отчетов.

Начало работы

Порядок начала работы и ввода остатков:

1. Заполняются константы и справочники.
Справочник номенклатуры удобнее заполнять по ходу работы.
Сервис-Параметры-Общие установить 4 цифры в датах.
Сервис-Параметры-Журналы установить период видимости журналов
начало года - конец года или по Вашему усмотрению.
2. Вносятся остатки товара на складе.
Приходная накладная со статусом документа ВводОстатков.
3. Вносятся остатки товара по точкам.
Документ реализатора со статусом документа ВводОстатков.
4. Вносятся остатки взаиморасчетов с клиентами.
Документ Остатки взаиморасчетов.

Импорт из типовой торговой конфигурации 7.XXX:

1. Из типовой конфигурации выполнить обработку EX_TRADE.ERT
Установить дату нач. и дату кон. на текущую дату они влияют на выборку периодических реквизитов.
Выгрузить Склады, Пользователей, Номенклатуру, Контрагентов
2. Из новой конфигурации выполнить загрузку Склады, Пользователей, Номенклатуру, Контрагентов
3. Для переноса некоторых реквизитов можно использовать обработку EX_SPRAV.ERT
При этом для сязи баз используется поле НАИМЕНОВАНИЕ а конкретный реквизит справочника
Вы можете задать в коде обработки.

4. В типовой конфигурации создайте документ ИНВЕНТАРИЗАЦИЯ_РЕАЛИЗАТОРА для каждого реализатора
И выгрузите в файл через обработку EX_TRADE.ERT.
Для файла обмена лучше задавать полный путь файла например: C:\OST1.TXT
5. В типовой конфигурации создайте документ ИНВЕНТАРИЗАЦИЯ для каждого склада
И выгрузите в файл через обработку EX_TRADE.ERТ
6. В новой конфигурации выполните обработку DOC_EXCH.ERT
Указывайте правильно имена файлов обмена.
Для остатков склада нажимайте кнопку загрузка в ПРИХОДНУЮ_НАКЛАДНУЮ
Для остатков реализатора нажимайте кнопку загрузка в ДОКУМЕНТ_РЕАЛИЗАТОРА
Исправьте шапки документов. Укажите правильно статус документа. (ВводОстатков)

Работа с программой

Порядок работы с программой:

1. Товар поступает на склад по документам ПриходнаяНакладная (см. описание документа ПН)
При внесении ПН можно проконтролировать и исправит розничную цену.
2. Отпуск товара по точкам выполняется только через ДокументРеализатора (см. описание документа ДР)
Направление движения товара задается СтатусомДокумента.
3. По документам ПКО вносится выручка торговых точек.
4. Периодически выполняется инвентаризация реализатора.
Для этого нужно распечатать остатки реализатора. (Меню\Отчеты\Остатки реализатора)
Отдать на торговую точку для заполнения.
Затем следует создать документ ИнвентаризацияРеализатора,
заполнить его согласно ведомости инвентаризации.
При этом конфигурация рассчитывает количество проданного товара,
так чтобы остатки реализатора совпадали с документом ИнвентаризацияРеализатора.
В отчете ВзаиморасчетыРеализатора можно увидеть баланс торговой точки.
(к-во проданного товара, сумма выручки, сумма недостачи, остаток товара)

Что можно скачать

Скачать конфигурацию "Конкурент-магазин 3.18" (115К)
Автор конфигурации Андрей Величко


Мини-библиотека | Учебник по 1С | mista.ru

Мини-библиотека

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Мини-библиотека

Постановка задачи
Объекты конфигурации
 Справочник "Произведения"
Справочник "Книги"
Документ "Выдача книги"
 Документ "Продление книги"
Документ "Возврат книги"
 Документ "Потеря книги"
Отчет "Библиотечная выписка"
 Отчет "Долги читателя"
Дополнительные функции
 Что можно скачать

 В три часа ночи:
- Как пройти в библиотеку?

Постановка задачи
Требуется создать простейшую систему учета для библиотеки, которая позволит выдавать книги читателям, отслеживать задолженности читателя и формировать отчеты по совершенным операциям за заданный период.

Конфигурация, по-видимому, должна содержать справочник Книги. У каждой книги есть уникальный библиотечный номер (код). Необходимо отметить, что может быть несколько экземпляров одного и того же произведения.

Очевидно, в конфигурации должен быть справочник Читатели. Каждому читателю выдается читательский билет с уникальным номером.

В программе должны фиксироваться следующие события:

  • Выдача книг читателю из библиотеки на определенный срок
  • Продление книги
  • Возврат книги читателем в библиотеку
  • Потеря книги читателем

Для каждого события в конфигурации необходимо предусмотреть соответствующий документ.

Правила работы библиотеки следующие:

  • Читатель может взять в библиотеке только определенное количество книг (задается директором библиотеки).
  • Читатель берет книги обычно на месяц, но может сразу взять книгу на больший срок, если явно скажет об этом.
  • Читатель может продлевать книгу, т.е. сообщать о том, что он вернет ее позже указанного ранее срока.
  • При просрочке возврата книги, читатель получает предупреждение.
  • Когда предупреждений у читателя накапливается больше определенного предела, он лишается правом пользования библиотекой на 1 месяц.
  • При потере книги читатель лишается правом пользования библиотекой на 1 месяц, независимо от количества предупреждений.

В программе должна быть возможность сформировать библиотечную выписку, которая показывает все совершенные операции за заданный период. Необходимо иметь возможность выбрать операции только по указанному читателю и/или по указанной книге.

В программе должна быть возможность узнать долги конкретного читателя на данный момент, т.е. какие книги у него сейчас на руках и когда он должен их вернуть.

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Константы
  • МаксКолвоПредупреждений
  • МаксКолвоКнигНаРуках
  • КолвоДнейБлокировки
  • КолвоДнейДляВыдачи
Справочники
  • Произведения
  • Книги (подчинен спр. Произведения)
  • Читатели
  • ЖанрыКниг
  • Авторы
Перечисления
  • СтатусКниги (значения: Свободна, Выдана, Списана)
  • ДаНет (значения: Да, Нет)
Документы
  • ВыдачаКниги
  • ПродлениеКниги
  • ВозвратКниги
  • ПотеряКниги
Журналы документов
  • Библиотека
Отчеты
  • БиблиотечнаяВыписка
  • ДолгиЧитателя

Справочник "Произведения" (форма элемента)

Экранная форма элемента справочника Произведения выглядит следующим образом:

Справочник "Книги" (форма списка)

Экранная форма списка справочника Книги выглядит следующим образом:

Документ "Выдача книги"

Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

СпрКниги = создатьОбъект("Справочник.Книги");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Выдана;
СпрКниги.Читатель = Читатель;
СпрКниги.ДатаВыдачи = ДатаДок;
СпрКниги.СрокВозврата = СрокВозврата;
СпрКниги.Записать();

КонецЦикла;

КонецПроцедуры

Документ "Продление книги"
Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

СпрКниги = создатьОбъект("Справочник.Книги");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Если Число(НовыйСрокВозврата)<>0 Тогда

СпрКниги.НайтиЭлемент(Книга);
СпрКниги.СрокВозврата = НовыйСрокВозврата;
СпрКниги.Записать();

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Документ "Возврат книги"
Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

 СпрКниги
                = создатьОбъект("Справочник.Книги");
СпрЧитатели = СоздатьОбъект("Справочник.Читатели");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СпрКниги.НайтиЭлемент(Книга);

Если СпрКниги.СрокВозврата < ДатаДок Тогда

СпрЧитатели.НайтиЭлемент(Читатель);
СпрЧитатели.КоличествоПредупреждений = СпрЧитатели.КоличествоПредупреждений
                    + 1;
СпрЧитатели.Записать();

Если СпрЧитатели.КоличествоПредупреждений > Константа.МаксКолвоПредупреждений
                    Тогда

УстановитьРеквизитСправочника(Читатель, "Блокирован",Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован",Перечисление.ДаНет.Нет, ДатаДок + Константа.КолвоДнейБлокировки);

КонецЕсли;

КонецЕсли;

СпрКниги.Статус = Перечисление.СтатусКниги.Свободна;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();

КонецЦикла;

КонецПроцедуры

Документ "Потеря книги"
Экранная форма документа выглядит следующим образом:

Модуль формы см. в конфигурации "Мини-библиотека".

Модуль проведения:

Процедура ОбработкаПроведения()

СпрКниги = создатьОбъект("Справочник.Книги");

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Списана;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();

КонецЦикла;

УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Нет, ДатаДок + Константа.КолвоДнейБлокировки);

КонецПроцедуры

Отчет "Библиотечная выписка"

Экранная форма диалога отчета выглядит следующим образом:

Пример работы отчета:

Модуль отчета см. в конфигурации "Мини-библиотека".

Отчет "Долги читателя"

Экранная форма диалога отчета выглядит следующим образом:

Пример работы отчета:

Модуль отчета см. в конфигурации "Мини-библиотека".

Дополнительные функции

Вам предлагается самостоятельно реализовать следующие дополнительные функции:

  • Поиск нужной книги по названию, автору, жанру и другим известным признакам.
  • Технология штрих-кодирования. Каждому читателю и каждой книге присваивается уникальный штрих-код. В экранных формах выбор читателя производится путем считывания штрих-кода, программа должна найти читателя или книгу в справочнике по штрих-коду.
  • Денежные расчеты. Допустим каждая книга имеет определенную ценность и библиотека является коммерческой. Каждый день взятия книги должен быть оплачен читателем исходя из задаваемых директором тарифов. При потере книги читатель должен заплатить штраф.
  • Отмена документов. При отмене проведения документов все изменения, которые он сделал в системе должны быть также отменены. Для сохранения непротиворечивости базы данных отмена документов должна проводиться в обратном порядке для каждого читателя и книги.
  • Может быть вам захочется реализовать учет на регистрах, а не только на справочниках и документах.
  • Добавьте другие функции, которые вы считаете просто необходимыми для работы нормальной библиотеки.

Что можно скачать

Скачать конфигурацию "Мини-библиотека" (20К)


Почтальон Печкин | Учебник по 1С | mista.ru

Почтальон Печкин

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Почтальон Печкин

Постановка задачи
Объекты конфигурации
Справочник "Пользователи"
 Справочник "Черный список"
 Документ "Письмо"
Журнал "Письма"
Документ "Сообщение"
 Журнал "Чат"
 Обработка "Чистка базы"
 Что можно скачать

Тук-тук...

- Кто там?
- Это я, Почтальон Печкин! Принес заметку про вашего мальчика.

Постановка задачи
Требуется создать простейшую почтовую систему для локальной сети предприятия. Система должна позволять отправлять письма и должен быть общий чат. У каждого пользователя может быть черный список его недругов, от которых он не желает получать письма. Нужно иметь возможность прицеплять к письму различные объекты базы 1С:Предприятие, например, товары, накладные и пр.

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
  • Пользователи
  • Черный список (подчинен спр. Пользователи)
Документы
  • Письмо
  • Сообщение
Журналы
  • Письма
  • Чат
Обработки
  • ЧисткаБазы

Справочник "Пользователи"

Данный справочник будет содержать сведения о пользователях конфигурации. Фактически - это будет список почтовых ящиков. При входе в систему производится поиск логина в этом справочнике и если он не находится, то в справочник автоматически добавляется новый пользователь. Глобальная переменная ТекПользователь при начале работы системы получает значение из этого справочника, т.е. по этой переменной в любом модуле программы всегда можно узнать, какой пользователь работает с конфигурацией.

Данный справочник содержит следующие поля:

  • Код
  • Наименование (краткое имя, логин)
  • ПолноеИмя
  • Подпись (для подстановки в новые письма)
  • ЕстьПисьмо (флажок, который показывает, что пришла новая почта)

Справочник "Черный список"

Данный справочник будет хранить список недругов каждого пользователя, от которых он не желает получать письма. При открытии справочника отражается список недругов текущего пользователя, работающего с программой.

Справочник имеет единственное дополнительное поле Недруг, значения которого выбирается из спр.Пользователи

Документ "Письмо"

Данный документ имеет шапку и табличную часть. В шапке отражается, кто написал письмо, кому оно адресуется (адресат), тема письма, текст письма и флажок важности. Табличная часть содержит приложения к письму. Приложением может быть элемент любого справочника или любой документ с небольшим сопроводительным текстом. Данная почта отличается от Outlook тем, что позволяет прицеплять к письму конкретные объекты базы 1С, в которой работают пользователи. Т.е. пользователь может отправить такое письмо: "Света, посмотри, что творится с этой накладной!" и прицепить к письму саму накладную.

А на вкладке Приложения прицеплены сами товары с комментариями!

При сохранении письма производится следующее. У адресата устанавливается в единицу флажок ЕстьПисьмо в спр. Пользователи. Каждые несколько секунд (интервал настраивается в константах) производится проверка новой почты, если флажок взведен и есть новые непрочитанные письма, о которых еще не было оповещения, тогда пользователю выдается сообщение "Пришла почта! Прочитать?". Флажок ЕстьПисьмо снимается и утех писем, о которых пользователь был оповещен, устанавливается флажок БылоОповещение. Если пользователь ответит Да, тогда откроется его почтовый ящик (журнал Письма).

Журнал "Письма"

Этот журнал представляет из себя почтовый ящик. При открытии журнала показываются письма только текущего пользователя. Это нужно для того, чтобы пользователи не смотрели чужие почтовые ящики.

Документ "Сообщение"

Данный документ является коротким сообщением в общий чат. При сохранении документа он отражается в журнале Чат.

Журнал "Чат"

Данный журнал показывает документы "Сообщение" и является неким подобием чата. Любой пользователь может создать новый документ Сообщение и сохранить его, тогда через пару секунд его увидят остальные пользователи в этом журнале. Связь состоялась.

При нажатии на кнопку "Что мне сказали" производится отбор только тех сообщений, которые были адресованы текущему пользователю. Кнопка "Все сообщения" опять показывает все сообщения всем пользователям.

Обработка "Чистка базы"

Данная обработка находит старые прочитанные письма, а также старые сообщения, и помечает их на удаление.

Что можно скачать

Скачать конфигурацию "Почтальон Печкин" (30К)


Денежки | Учебник по 1С | mista.ru

Денежки

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Денежки

Постановка задачи
Объекты конфигурации
Спр. Участники
 Спр. Кошельки
 Спр. Статьи доходов
 Спр. Статьи расходов
 Док. Ввод нач. остатков
 Док. Доход
 Док. Расход
 Док. Перевод
Отчет Остатки
 Отчет Доходы и расходы
 Что можно скачать

 Быть было беде, да случились деньги на бедре.

Постановка задачи
Требуется создать простейшую систему учета семейных доходов и расходов. Система должна показывать текущий остаток в кошельке у каждого члена семьи и общие семейные накопления. Система должна давать возможность узнать доходы и расходы семьи за заданный период с группировкой по участникам или по статьям доходов и расходов.

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
  • Участники
  • Кошельки (доп. реквизит Участник)
  • Статьи доходов
  • Статьи расходов
Документы
  • Доход
    (реквизиты шапки: Участник, Статья, Кошелек, Сумма)
  • Расход
    (реквизиты шапки: Участник, Статья, Кошелек, Сумма)
  • Перевод
    (реквизиты шапки: КошелекОткуда, КошелекКуда, Сумма)
  • ВводНачОстатков
    (реквизиты табличной части: Кошелек, Сумма)

При создании документов не забудьте поставить галочку "Оперативный учет", чтобы данный документ мог делать движения в регистрах.

Создайте два общих реквизита Автор и Комментарий текстового типа.
Журналы документов
  • ВсеДокументы
Регистры
  • Кошельки (регистр остатков)
  • Доходы (оборотный регистр)
  • Расходы (оборотный регистр)
Отчеты
  • Остатки
  • ДоходыРасходы

Справочник "Участники"

Данный справочник будет содержать имена членов семьи и названия сторон, от имени которых производятся доходы и расходы, и кому принадлежат кошельки.

Справочник "Кошельки"

Данный справочник будет содержать названия мест хранения денежных средств семьи.

Справочник "Статьи доходов"

Данный справочник будет содержать названия источников дохода семейных средств.

Справочник "Статьи расходов"

Данный справочник будет содержать названия направлений расходования семейных средств. Это многоуровневый справочник.

Документ "Ввод начальных остатков"

Экранная форма документа выглядит следующим образом:

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.Кошельки.Кошелек
                  = Кошелек;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеПриходВыполнить();

КонецЦикла;

КонецПроцедуры

Документ "Доход"

Экранная форма документа выглядит следующим образом:

Модуль проведения:

Процедура ОбработкаПроведения()

 Регистр.Доходы.Участник
                = Участник;
Регистр.Доходы.Статья = Статья;
Регистр.Доходы.Сумма = Сумма;
Регистр.Доходы.ДвижениеВыполнить();

Регистр.Кошельки.Кошелек = Кошелек;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеПриходВыполнить();

КонецПроцедуры

Документ "Расход"
Экранная форма документа выглядит следующим образом:

Модуль проведения:

Процедура ОбработкаПроведения()

 Регистр.Расходы.Участник
                = Участник;
Регистр.Расходы.Статья = Статья;
Регистр.Расходы.Сумма = -Сумма;
Регистр.Расходы.ДвижениеВыполнить();

Регистр.Кошельки.Кошелек = Кошелек;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеРасходВыполнить();

КонецПроцедуры

Документ "Перевод"
Данный документ переводит средства из одного кошелька в другой.

Модуль проведения:

Процедура ОбработкаПроведения()

 Регистр.Кошельки.Кошелек
                = КошелекОткуда;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеРасходВыполнить();

Регистр.Кошельки.Кошелек = КошелекКуда;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеПриходВыполнить();

КонецПроцедуры

Отчет "Остатки"

Экранная форма диалога отчета выглядит следующим образом:

Модуль отчета:

Процедура Сформировать()

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса
                = "
|Кошелек = Регистр.Кошельки.Кошелек;
|Участник = Регистр.Кошельки.Кошелек.Участник;
|Сумма = Регистр.Кошельки.Сумма;
|Группировка Кошелек;
|Функция СуммаВКошельке = КонОст(Сумма);
|Условие(Кошелек в ВыбрКошелек);
|Условие(Участник в ВыбрУчастник);
|";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
.......Возврат;
КонецЕсли;

Таб = СоздатьОбъект("Таблица");

Таб.ВывестиСекцию("Все<");

Пока Запрос.Группировка(1) = 1 Цикл
....... Таб.ВывестиСекцию("Кошелек");
КонецЦикла;

Таб.ВывестиСекцию("Все>");
Таб.Показать();

КонецПроцедуры

Пример работы отчета:

Отчет "Доходы и расходы"

Экранная форма диалога отчета выглядит следующим образом:

Сначала указывается тип отчета: доходы или расходы. Затем выбирается период, за которые формируется отчет. В отчете можно указать 1 или 2 группировки Участник и Статья в произвольном порядке. Также можно указать отбор по одному участнику или статье.

Модуль отчета см. в конфигурации "Денежки".

Пример работы отчета (отчет о доходах, включены две группировки):

Пример работы отчета (отчет о расходах, включена только одна группировка Статьи):

Что можно скачать

Скачать конфигурацию "Денежки" (30К)


Реверси | Учебник по 1С | mista.ru

Реверси

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Реверси
Постановка задачи
Объекты конфигурации
Технические подробности
Домашнее задание
 Что можно скачать 		Вся наша жизнь - игра.

Постановка задачи
Требуется создать средствами 1С игру "Реверси". Правила игры следующие.

Игра ведется на поле 8х8. Противники ходят по очереди. На каждом ходе игрок может поставить на поле одну фишку своего цвета. Фишки можно ставить только в том случае если одна или несколько фишек противника попадают в окружение. Окруженной считается фишка или ряд фишек если они ограничены с двух противоположных сторон по вертикали, горизонтали или диагонали фишками противника. Окруженные фишки меняют свой цвет. Если игрок не может выполнить ход, то право хода передается противнику. Игра продолжается до тех пор, пока хотя бы один из игроков может ходить. Побеждает тот, чьих фишек в конце игры оказывается больше.

Объекты конфигурации
Игра реализована в виде внешнего отчета (ert-файл). Поэтому игру можно подключить к любой конфигурации и доставить радость вашим пользователям!

Технические подробности
Игровое поле реализовано в виде множества кнопок (64х3). На каждом поле размещается по три кнопки: пустая, с белой фишкой и с черной фишкой. В процедуре ПоказатьДоску в соответствии с массивом Доска скрываются и показываются нужные кнопки. В массиве Доска хранится текущая игровая ситуация. Значение поля = 1 означает пустую клетку, 2 и 3 - белые и черные фишки.

При нажатии на кнопку игрового поля происходит вызов процедуры ХодЮзера. В этой процедуре определяется правильность хода (функция ВозможенХод) и вызывается процедура ВыполнитьХод, которая меняет цвет окруженных фишек. Затем проверяется, есть ли у компьютера возможные ходы и если есть, тогда происходит самое "интеллектуальное": процедура НашХод подбирает самый лучший ход в данной игровой ситуации. В этой процедура в памяти создается копия доски (процедура ДублироватьДоску) и на ней происходит перебор всех возможных ходов с выбором наилучшего с помощью оценочной функции РейтингХода.

Домашнее задание

Заставьте компьютер играть с самим собой. Но обязательно сделайте паузы между ходами, чтобы и человеку было интересно.

Что можно скачать

Скачать игру "Реверси" (10К)


Мини-склад | Учебник по 1С | mista.ru

Мини-склад

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Мини-склад
Постановка задачи
Объекты конфигурации
Документ Приход
Документ Расход
Отчет "Остатки материалов"
 Дополнительные функции
 Что можно скачать 		- Только что здесь была моя ладья, а теперь ее нет.
- Нет - значит не было. Я ее съел.
- На каком ходу?
- На четырнадцатом. Что вы мне голову морочите?
- Позвольте! У меня все ходы записаны!
/ Остап Бендер и шахматисты, к/ф "12 стульев" /

Постановка задачи
Требуется создать простейшую систему складского учета для нескольких складов, которая позволит приходовать и отпускать материалы, а также формировать отчет по остаткам материалов.

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
  • Материалы (количество уровней: 3)
  • Склады
Документы
  • Приход
    (реквизиты шапки: Склад,
    реквизиты табличной части: Материал, Количество)
  • Расход
    (реквизиты шапки: Склад,
    реквизиты табличной части: Материал, Количество)
При создании документов не забудьте поставить галочку "Оперативный учет", чтобы данный документ мог делать движения в регистрах.
Журналы документов
  • Складские
Регистры
  • ОстаткиМатериалов
Отчеты
  • ОстаткиМатериалов

Документ "Приход"

Экранная форма документа Приход выглядит следующим образом:

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал
                  = Материал;
Регистр.ОстаткиМатериалов.Склад = Склад;
Регистр.ОстаткиМатериалов.Количество = Количество;
Регистр.ОстаткиМатериалов.ДвижениеПриходВыполнить();

КонецЦикла;

КонецПроцедуры

Документ "Расход"
Экранная форма документа Расход выглядит следующим образом (отличается только названием):

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал
                  = Материал;
Регистр.ОстаткиМатериалов.Склад = Склад;
Регистр.ОстаткиМатериалов.Количество = Количество;
Регистр.ОстаткиМатериалов.ДвижениеРасходВыполнить();

КонецЦикла;

КонецПроцедуры

Отчет "Остатки материалов"

Экранная форма диалога отчета выглядит следующим образом:

Шаблон печатной формы (в Конфигураторе):

Модуль отчета:

Процедура Сформировать()

 Запрос
                = СоздатьОбъект("Запрос");

ТекстЗапроса = "
|Материал = Регистр.ОстаткиМатериалов.Материал;
|Склад = Регистр.ОстаткиМатериалов.Склад;
|Количество = Регистр.ОстаткиМатериалов.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Материал;
|Группировка Склад;
|Условие (Материал в ВыбрМатериалГруппа);
|Условие (Склад в ВыбрСклад);
|";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
...Возврат;
КонецЕсли;

Таб = СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Заголовок");

Пока Запрос.Группировка(1) = 1 Цикл

Если Запрос.Материал.ЭтоГруппа()=1 Тогда
... Таб.ВывестиСекцию("Группа");
Иначе

Таб.ВывестиСекцию("Материал");

Если Фл_НеВыводитьСклады = 0 Тогда
...Пока Запрос.Группировка(2) = 1 Цикл
......Таб.ВывестиСекцию("Склад");
...КонецЦикла;
КонецЕсли;

КонецЕсли;

КонецЦикла;

Таб.Опции(0);
Таб.Показать("ОстаткиМатериалов", "");

КонецПроцедуры

Примеры работы отчета:

В следующем примере отключена детализация по складам:

Дополнительные функции

Вам предлагается самостоятельно реализовать следующие дополнительные функции:

  • Единицы измерения для каждого материала. У материала есть основная единица измерения (выбирается из справочника ЕдиницыИзмерения), в которых хранятся остатки в регистре. При приходовании и расходовании материала пользователь может указать любую единицу измерения, допустимую для данного материала (выбирается из подчиненного справочника ЕдИзмМатериалов). Программа пересчитывает указанное количество в основную единицу измерения с использованием коэффициента пересчета из справочника ЕдИзмМатериалов. В отчет добавляется новая колонка "Ед. изм."

  • Учет денежного выражения. В регистр Материалы добавляется новый ресурс СуммаРуб. (название Сумма не рекомендуется, так как есть встроенная функция Сумма в языке запросов). В отчете выводятся две колонки: Количество и Сумма. Должна быть возможность выводить только одну колонку по требованию пользователя. По колонке Сумма должны выводиться итоги по каждой группе материалов и по всему отчету.

  • Отчет о движении материалов за период. Пользователь в диалоге указывает период. В отчете выводятся колонки: Материал, Остаток на начало период, Приход за период, Расход за период, Остаток на конец периода. Для ускорения работы отчета на больших базах можно создать оборотный регистр ДвижениеМатериалов, тогда каждый документ должен делать движения по двум регистрам.

  • Партионный учет. Списание материалов по средней себестоимости / по методу FIFO / LIFO. В регистр добавляется новое измерение Партия (типа Документ). При расходовании материала подсчитывается сумма списания по заданному методу. Метод задается пользователем в константе МетодСписанияМатериалов (выбирается из перечисления МетодыСписанияМатериалов).

Что можно скачать

Скачать конфигурацию "Мини-склад" (15К)


Мини-зарплата | Учебник по 1С | mista.ru

Мини-зарплата

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Зарплата / Мини-зарплата

Постановка задачи
 Объекты конфигурации
Минимальный кадровый учет
 Налоговые льготы сотрудника
 Расчет зарплаты
 Отчеты по зарплате
Что можно скачать

 Разговаривают между собой два босса. Один другому говорит:
- Представляешь! Я своим сотрудникам уже полгода зарплату не плачу, а они всё ходят и ходят на работу.
- А ты сделай вход платным...

Постановка задачи
Требуется создать простейшую систему расчета зарплаты, удовлетворяющую следующим минимальным требованиям:

  1. Минимальный кадровый учет (справочник Сотрудники, документы Прием, Перемещение, Увольнение, журнал Кадровые документы)
  2. Две категории сотрудников: "Руководители и специалисты" (сидят на окладе), "Рабочие" (работают по тарифу)
  3. Возможность учета невыходов сотрудника на работу (например, прогулы).
  4. Ввод премий сотрудникам.
  5. Расчет подоходного налога с учетом налоговых льгот (стандартных вычетов).
  6. Отчетность по зарплате (ведомость на выплату зарплаты, свод, расчетные листочки, лицевые счета)

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Константы
  • НазваниеОрганизации
  • СтавкаПН (периодич.)
Справочники
  • Сотрудники
  • НалоговыеЛьготы (подчинен спр.Сотрудники)
  • Категории
  • Подразделения
  • Должности
  • Разряды
  • ТипНалоговойЛьготы
  • ОснованияУвольнения
Перечисления

нет
Документы
  • ПриемНаРаботу
  • Перемещение
  • Увольнение
  • НачалоМесяца
  • ВводНевыходов
  • ВводПремий
Журналы документов
  • КадровыеДокументы
  • Премии
  • Отклонения
  • Системные
Отчеты
  • ВедомостьНаЗарплату
  • РасчетныеЛисточки
  • Свод
  • ЛицевыеСчета
  • ПоискВидаРасчета
Календари
  • Табель_8час
  • Табель_7час
Журналы расчетов
  • Зарплата
Обработки
  • РасчетЗарплаты
Виды расчета
  • ПоОкладу
  • ПоТарифу
  • Невыход
  • Премия
  • СтандВычетНаСебя
  • СтандВычетНаДетей
  • Премия
  • Подоходный налог
  • НаРуки
Группы расчетов
  • ВсеНачисления
  • ВсеУдержания
  • ОблагаетсяПН
  • ВсеВычеты

Минимальный кадровый учет

В конфигурации есть 2-хуровневый справочник Сотрудники, содержащий две системные группы: Работающие и Уволенные. Ввод нового сотрудника производится документом "Прием на работу".

В конфигурации есть три кадровых документа, обеспечивающих самые обязательные операции по движению кадров: "Прием на работу", "Перемещение", "Увольнение". Эти документы хранятся в журнале "Кадровые документы".

По каждому сотруднику хранится следующая информация:

  • Табельный номер (реквизит Код)
  • ФИО (реквизит Наименование)
  • Категория*
  • Подразделение*
  • Должность*
  • Разряд*
  • Оклад*
  • Календарь*
  • Дата приема
  • Дата увольнения

Реквизиты, отмеченные звездочкой, являются периодическими. Это означает, что в программе хранится история их изменения по датам. Изменение этих реквизитов должно оформляться кадровым документом "Перемещение". Реквизиты "Дата приема" и "Дата увольнения" заполняются автоматически при проведении документов "Прием на работу" и "Увольнение". При увольнении сотрудник автоматически переходит в группу Уволенные.

Налоговые льготы сотрудника

Если у сотрудника есть право на стандартные налоговые вычеты, то их следует ввести в справочник НалоговыеЛьготы, который подчинен справочнику Сотрудники. Для этого нужно открыть справочник Сотрудники, перейти курсором на нужного сотрудника и открыть подчиненный справочник НалоговыеЛьготы.

Для каждой налоговой льготы можно указать период ее действия. Если не указывать окончание периода действия льготы, тогда она будет действовать все время, пока сотрудник не уволен.

Если у сотрудника введены налоговые льготы, тогда при проведении документа "Начало месяца" в журнал Зарплата добавляются виды расчета "СтандВычетНаСебя" и "СтандВычетНаДетей". Вычеты влияют на расчет подоходного налога.

Расчет зарплаты

Все промежуточные и окончательные результаты расчета зарплаты хранятся в журнале расчетов Зарплата. В журнале Зарплата можно включить закладки отбора сотрудников по категориям, по подразделениям или по группам справочника Сотрудники (Работающие и Уволенные).

  1. Для инициализации расчета сначала необходимо провести документ "Начало месяца", который введет в журнал Зарплата нерассчитанные записи с нулевым результатом (за исключением стандартных вычетов, которые сразу рассчитываются).
  2. Затем необходимо ввести периоды невыходов (прогулов) документом "Ввод невыходов". Этот документ вводит вид расчета "Невыход", который вытесняет виды расчета ПоОкладу и ПоТарифу.
  3. Если некоторым сотрудникам полагаются премии, то нужно провести документ "Ввод премий".
  4. После этого можно произвести расчет зарплаты обработкой "Расчет зарплаты". Существует два режима расчета зарплаты: только начисления и окончательный расчет. При окончательном расчете рассчитываются все виды расчетов, включая подоходный налог и сумму "на руки".
  5. После окончательного расчета можно сформировать отчеты по зарплате.
  6. Для закрытия месяца следует сменить период расчета в журнале Зарплата. Все записи станут архивными и их уже нельзя будет корректировать. Если все-таки это потребуется, то для корректировки результатов расчета предыдущих месяцев следует вводить новые записи-сторно, у которых период действия распространяется на прошлые месяцы. Т.е. запись введена, например, в феврале, а период действия у нее - январь.

Отчеты по зарплате

В конфигурации есть следующие отчеты по зарплате:

Отчет | Описание
Ведомость на зарплату | Предназначен для кассира и показывает сумму "на руки" по каждому сотруднику.
Лицевые счета | Показывает промежуточные и конечные результаты расчета зарплаты по всем сотрудникам. Можно задать фильтр по категории и/или подразделению.
Расчетные листочки | Показывает промежуточные и конечные результаты расчета зарплаты по конкретному сотруднику. Расчетный листочек выдается сотруднику перед выдачей зарплаты для ознакомления. Можно распечатать листочек только для указанного сотрудника или по всем сотрудникам сразу. Можно задать фильтр и/или группировку по категории и подразделению.
Свод | Показывает сводные результаты расчета с различной группировкой. Строка отчета соответствует виду расчета или группе расчетов. Колонка отчета соответствует категории или подразделению. По строке подводится итог. Можно задать фильтр по категории и/или подразделению.
Поиск вида расчета | Позволяет выбрать всех сотрудников с определенным видом расчета или группой расчетов. Пользователь может задать фильтр по категории и/или подразделению. Можно задать любой период и при необходимости разбить его по месяцам. Есть возможность вывести дополнительные графы по сотруднику.

Что можно скачать

Скачать конфигурацию "Мини-зарплата". (80К)

В программе во всех модулях примерно 800 строк, поэтому разобраться в ней вам вполне по силам. Самый большой модуль (отчет Свод) содержит примерно 150 строк. Для сравнения скажу, что типовая конфигурация "Зарплата и Кадры" содержит больше 50 000 строк.

Если вам понравились отчеты или некоторые приемы программирования, то вы можете включить их в свои программы. Никаких запретов на использование конфигурации нет. Естественно, все под вашу ответственность.


Файловая система | Учебник по 1С | mista.ru

Файловая система

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Файловая система

Для работы с файлами и каталогами в 1С:Предприятие используется специальный объект "ФС" (файловая система). Средства языка 1С имеют возможности поиска, копирования, переименования, удаления и совершения других операций с файлами и каталогами.

Обращение к файловой системе

Для работы с файловой системой предназначен объект "ФС". В принципе его не требуется создавать с помощью функции СоздатьОбъект. Можно считать, что он уже создан. Но 1С позволяет создать сколько угодно таких объектов при помощи функции СоздатьОбъект;

Пример:

ГдеМыНаходимся
              = ФС.ТекКаталог();
ФС.СоздатьКаталог("DOCS");
НовФС = СоздатьОбъект("ФС");

Объект "ФС" имеет следующие методы:

Метод
Описание
ВыбратьФайл(<ИмяФайла>)

Открывает окно диалога выбора/сохранения файла. Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.

Синтаксис: ВыбратьФайл (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Фильтр>, <Расширение>, <Таймаут>)

Параметры:
<ТипДиалога> -: 0 - диалог типа <открыть>, 1 - диалог типа <сохранить>;
<ИмяФайла> - переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;
<ИмяНачКаталога> - переменная, содержащая на входе строку с начальным каталогом, а на выходе - имя выбранного каталога;
<ЗаголовокОкна> - строка с заголовком окна;
<Фильтр> - строка с фильтром отбора файлов (например: 'Все файлы (*.*) |*.*');
<Расширение> - строка с расширением файла по умолчанию;
<Таймаут> - время ожидания отклика пользователя в секундах (необязателен).
ВыбратьФайлКартинки Открывает окно диалога выбора/сохранения файла картинки.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.
Синтаксис: ВыбратьФайлКартинки (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Расширение>, <Таймаут>)
ВыбратьКаталог

Открывает окно диалога выбора каталога.
Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена'; 1 - если в окне диалога нажата кнопка 'ОК', при этом в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) - закончилось время <Таймаут> ожидания отклика пользователя.
Синтаксис: ВыбратьКаталог(<ИмяКаталога>,<ЗаголовокОкна>,<Таймаут>)
СуществуетФайл

Проверяет существование файла..
Возвращает: 1 - файл существует; 0 - не существует.
Синтаксис: СуществуетФайл(<ИмяФайла>)
КопироватьФайл

Копирует файл.
Синтаксис: КопироватьФайл(<ИмяФайлаИсточника>,<ИмяФайлаПриемника>,<ФлагПерезаписи>)

Параметры:
<ИмяФайлаИсточника> - строка с именем файла источника;
<ИмяФайлаПриемника> - строка с именем файла приемника;
<ФлагПерезаписи> -:
0 - существующий файл приемника перезаписать;
1 - существующий файл приемника не перезаписывать.
УдалитьФайл

Удаляет файл.
Синтаксис: УдалитьФайл(<ИмяФайла>)
ПереименоватьФайл

Переименовать/переместить файл.
Синтаксис: ПереименоватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>, <ФлагПерезаписи>)

Параметры:
<ИмяФайлаИсточника> - строка с именем файла источника;
<ИмяФайлаПриемника> - строка с новым именем файла;
<ФлагПерезаписи> -:
0 - запрещает перемещение файла между дисками и существующий файл приемника не перезаписывается;
1 - разрешает перемещение файла между дисками (только для файлов) и существующий файл приемника перезаписывается.
НайтиПервыйФайл

Открывает выборку файлов по заданной маске и находит первый файл.
Возвращает строку с именем найденного файла.
Синтаксис: НайтиПервыйФайл(<МаскаИмени>)
НайтиСледующийФайл

Находит следующий файл по открытой выборке файлов.
Возвращает строку с именем найденного файла.
Синтаксис: НайтиСледующийФайл()
АтрибутыФайла

Возвращает атрибуты файла (в параметрах).

Синтаксис:
АтрибутыФайла (<ИмяФайла>, <РазмерФайла>, <АтрибутыФайла>, <ВремяСоздания>, <ВремяПоследнегоДоступа>, <ВремяПоследнейЗаписи>, <РасширенноеИмяФайла>)

Атрибуты файла закодированы, об этом см. Синтакс-Помощник или описание встроенного языка
СоздатьКаталог

Создать новый каталог (папку).
Синтаксис:СоздатьКаталог(<ИмяКаталога>)
УдалитьКаталог

Удаляет каталог файлов.
Синтаксис: УдалитьКаталог(<ИмяФайла>)
УстТекКаталог

Устанавливает текущий каталог файлов.
Синтаксис: УстТекКаталог(<ИмяФайла>)
ТекКаталог | Возвращает строку с именем текущего каталога файлов.
WindowsКаталог | Возвращает строку с именем Windows директории.
СвободноеМестоНаДиске Возвращает размер свободного дискового пространства в байтах.
Синтаксис: СвободноеМестоНаДиске(<ИмяДиска>)

Также часто применяются системные функции:

Метод | Описание
КаталогИБ | Возвращает имя каталога базы данных.
КаталогПользователя | Возвращает имя каталога пользователя.
КаталогПрограммы | Возвращает имя каталога с исполняемыми файлами системы 1С:Предприятие.
КаталогВременныхФайлов | Возвращает имя каталога временных файлов.
ИмяКомпьютера | Возвращает сетевое имя компьютера, работающего в данный момент с программой.

Примеры

Пример 1
//переместить все текстовые файлы (*.txt) из каталога информационной базы в каталог TXT.

ФС.УстТекКаталог(КаталогИБ());
ИмяФайла = "";
ИмяФайла = ФС.НайтиПервыйФайл("*.txt");
Если ИмяФайла <> "" Тогда
.... ФС.СоздатьКаталог("TXT");
.....ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT"
              + ИмяФайла);
.....ФС.УдалитьФайл(ИмяФайла);

Пока 1=1 Цикл

ИмяФайла = " ";
.....ИмяФайла = ФС.НайтиСледующийФайл()
Если ИмяФайла <> "" Тогда
.....ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT" + ИмяФайла);
.....ФС.УдалитьФайл(ИмяФайла);
Иначе
..... Прервать;
КонецЕсли;

КонецЦикла;

Пример 2
//выбрать файл с фотографией сотрудника

ИмяФайла = "";
ИмяКаталога = КаталогИБ();

Если ФС.ВыбратьФайлКартинки(0,ИмяФайла,ИмяКаталога,"Укажите файл с фотографией:",,20)=1 Тогда

ВремКартинка
                = СоздатьОбъект("Картинка");
ВремКартинка.Загрузить(ИмяКаталога + ИмяФайла);
КартинкаНаФорме.УстановитьКартинку(ВремКартинка);

КонецЕсли;


Экранные формы | Учебник по 1С | mista.ru

Экранные формы

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Экранные формы
Открытие формы
 Элементы диалога
Слои и закладки
Подбор 		Новый русский звонит своему братану и говорит:
- Мне тут 1С какое-то окошко открыл и предлагает сохраниться. Соглашаться?
- Не сразу! А то какой ты авторитет!

Открытие формы
Формы - это основной вид диалога с пользователем. Все справочники, документы, журналы, отчеты и обработки имеют экранные формы. Обычно форма открывается пользователем интерактивно (мышкой), но форму можно открыть и программно.

Конт = 0; //контекст формы (ссылка на форму)
ОткрытьФорму("Справочник.Сотрудники.Основная",Конт); //открыть форму списка справочника
ОткрытьФорму(ВыбрСотрудник); //открыть форму элемента справочника
ОткрытьФорму("Отчет.ГлавнаяКнига");
ОткрытьФорму("Документ.ПриемНаРаботу",Конт); //новый документ

//можно открыть форму модально и еще можно передать в форму параметр
//в модуле формы переданный параметр доступен через конструкцию Форма.Параметр
ОткрытьФормуМодально("Обработка.УсловияПоиска",10);

Элементы диалога на форме
В модуле формы к элементам диалога можно обращаться по их идентификаторам через конструкцию Форма.ЭлементДиалога

Форма.Сотрудник.Доступность(1);
              //сделать доступным
Форма.Сотрудник.Доступность(0); //сделать недоступным

Форма.Сотрудник.Видимость(1); //сделать видимым
Форма.Сотрудник.Видимость(0); //сделать невидимым

//можно менять заголовки на кнопке и на других элементах диалога
Форма.Кнопка.Заголовок("Далее >>");
Форма.Кнопка.Заголовок("Готово!");

//можно менять цвет элементов диалога
Если ВыбрСотрудник.Выбран()=0 Тогда
... Форма.Надпись_Сотрудник.Цвет(200,50,50); //красный, зеленый, синий (RGB)
....Активизировать("ВыбрСотрудник");
Иначе
... Форма.Надпись_Сотрудник.Цвет(0,0,0);
КонецЕсли;

Слои и закладки на форме
Форма может состоять из нескольких слоев. Каждый слой может быть показан или скрыт в любой комбинации с другими слоями.

Синтаксис: Форма.ИспользоватьСлой(<ИмяСлоя>,[<Режим>])

//показать слой Основной
Форма.ИспользоватьСлой("Основной",1);

//скрыть слой
              Основной
Форма.ИспользоватьСлой("Основной",0);

//показать слой Основной и скрыть все остальные
Форма.ИспользоватьСлой("Основной",2);

//показать слой Основной и Фон и скрыть все остальные
Форма.ИспользоватьСлой("Основной,Фон",2);

//закладки на
              форме реализуются с помощью слоев

Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1, "Закладка 1");
Форма.Закладки.ДобавитьЗначение(2, "Закладка 2");

Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)
....Если НомерЗакладки = 1 Тогда
......Форма.ИспользоватьСлой("Фон,Шаг1");
...Иначе
......Форма.ИспользоватьСлой("Фон,Шаг2");
...КонецЕсли;
КонецПроцедуры

Подбор
Функция подбора позволяет выбирать несколько значений из справочника или другого объекта, не закрывая его. Например, есть документ РасходнаяНакладная, в котором пользователь может указать несколько товаров.

Синтаксик: ОткрытьПодбор(<Объект>,<ИмяФормы>,<КонтекстФормы>,<ФлагМножВыбора>,<ТекЗнач>)

ОткрытьПодбор("Справочник.Номенклатура","ФормаДляПодбора",Конт,1);

Процедура ОбработкаПодбора(Элемент,КонтФормы)
...НоваяСтрока();
...Товар = Элемент;
КонецПроцедуры


Учебник по 1С | mista.ru

Учебник по 1С:Предприятие

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник
Что такое 1С?

1С — это фирма, которая разработала систему 1С:Предприятие. Фирма 1С основана в 1991 году Борисом Нуралиевым и его братом Сергеем. На сегодняшний день в фирме 1С работает около 500 человек. Лидерством в российском софтверном бизнесе фирма 1С обязана своей разветвленной сети партнеров и своему суперпродукту "1С:Предприятие".

Что такое 1С:Предприятие?

1С:Предприятие — это специализированная объектно-ориентированная система управления базами данных (СУБД), предназначенная для автоматизации деятельности предприятия. Особенно хорошо у нее получается автоматизировать учетные задачи: кадровый учет, расчет зарплаты, бухгалтерский учет, складской учет...

Почему 1С?

Да, действительно, почему именно 1С? Ведь существует много программ подобного рода. Все дело в том, что 1С:Предприятие воплощает самые передовые технологии баз данных, а именно, объектно-ориентированный подход к разработке программ. Такой подход ускоряет и упрощает разработку в десятки раз! К тому же 1С:Предприятие наиболее распространена в пределах России и СНГ. Владея таким мощным инструментом, Вы можете быть спокойным за свое трудоустройство и приличную зарплату.

С чего начать?

Начните с этого Учебника! Здесь подробно, шаг за шагом, рассказывается про 1С:Предприятие. Мы начнем с самых простых понятий и дойдем до таких интересных вещей, как Мастер отчетов. Все главы проиллюстрированы наглядными примерами, что позволит Вам быстро и хорошо освоить эту систему.

Объекты и механизмы

Система 1С:Предприятие предоставляет в распоряжение разработчику широкий набор объектов, на основе которых и создаются все прикладные решения. К ним относятся справочники, документы, регистры и т.д. А также система имеет встроенный язык программирования, механизм запросов, различные визуальные редакторы и конструкторы.

Примеры

Кто как, а я люблю изучать новый продукт по примерам. На этом сайте выложены учебные конфигурации, которые являются достаточно простыми для изучения. Обратите внимание, что хотя на 1С обычно разрабатываются экономические решения, но умельцы научились делать даже игры!

Бухгалтерия

Самый востребованный рынком механизм в 1С:Предприятие (и исторически первый). Обычно начинают изучать 1С именно с бухгалтерии, но я бы посоветовал сначала изучить регистры. Тем не менее бухгалтерские механизмы очень важны и знать их необходимо.

Зарплата

Сложная предметная область со всякими видами расчета, группами, вытеснением и прочим шаманством. 1С научилась с блеском автоматизировать даже самые сложные системы расчета зарплаты.


Кадровый учет | Учебник по 1С | mista.ru

Кадровый учет

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Кадровый учет

Постановка задачи
 Архитектура системы
Сведения о сотрудниках
 Кадровые документы
 Мастер отчетов
Что можно скачать

 - Дети, при экскурсии по стройке, наденьте каски! Вот в прошлый раз одна девочка надела каску, ей на голову упал кирпич, а она засмеялась и убежала.
Вовочка:
- Знаю я эту девчонку. Она до сих пор бегает и все смеется, смеется...

Постановка задачи

Требуется разработать автоматизированную систему, с помощью которой можно будет производить основную работу по кадровому учету в строительной организации.

Функции отдела кадров:

  1. Прием на работу новых сотрудников
  2. Увольнение сотрудников
  3. Кадровое перемещение
  4. Воинский учет
  5. Оформление отпусков
  6. Оформление больничных листов
  7. Ведение штатного расписания
  8. Отчетность

Более полное описание предметной области приведено здесь.

Архитектура системы

Нормативно-справочная информация используется для ведения базы сотрудников, штатного расписания и при работе с документами. Документы хранятся в журналах документов. Некоторые документы (прием, увольнение, перемещение) при проведении изменяют список сотрудников и количество вакансий в штатном расписании. По каждому сотруднику, кроме основных данных, ведется дополнительная информация в справочниках Кадровые данные, Состав семьи и т.д. Все эти данные используются для формирования отчетности и информационного обслуживания других пользователей и отделов.

Сведения о сотрудниках

Ниже приведена экранная форма списка справочника "Сотрудники".

Справочник Сотрудники двухуровневый и содержит две группы Работающие и Уволенные. В верхней части формы отображается информация по текущему сотруднику (на котором установлен курсор). Кнопка Мастер сотрудников вызывает отчет "Мастер сотрудников", который представляет собой фактически конструктор отчетов.

Ниже приведена экранная форма элемента справочника "Сотрудники".

Кнопка "Еще..." вызывает форму элемента справочника "Кадровые данные".

Кадровые документы

Все кадровые документы (прием, увольнение и т.д.) отражаются в журнале "Кадровые документы".

Кнопка "Поиск по ФИО" вызывает справочник "Документы по ФИО", в котором все документы упорядочены по ФИО сотрудников. Так как журнал документов в 1С нельзя упорядочить по произвольному полю, то пришлось завести отдельный справочник, аналогичный журналу документов и поддерживать его в актуальном состоянии при записи и проведении документов.

Документ "Прием на работу" выглядит следующим образом:

В модуле документа при его записи проверяется соблюдение всех деловых правил организации. Например, для 1 и 2 категории должен быть указан оклад и кол-во ставок по штатному расписанию, а объект должен быть ИТР. Для 3 категории должен быть указан объект (не ИТР) и должен быть указан разряд и тариф. При проведении документа в справочник Сотрудники добавляется новый элемент.

Документ "Кадровое перемещение " выглядит следующим образом:

В левой части документа отражаются сведения по указанному сотруднику на дату перемещения (прежнее место работы). В правой части документа пользователь указывает новое место работы. При проведении документ изменяет справочник "Сотрудники" и "Штатное расписание".

Остальные документы ("Отпуск", "Больничный лист", "Увольнение") выглядят аналогичным образом.

Мастер отчетов по сотрудникам

Часто отделу кадров требуется вывести список сотрудников, но не всех, а только нужных, удовлетворяющих определенному условию. Кроме того, требуется их еще определенным образом сгруппировать и вывести только нужные сведения по сотрудникам. Все эти отчеты запрограммировать невозможно, поэтому выходом из положения стал Мастер отчетов, который позволяет сконструировать отчет, требуемый в данный момент.

Итак, основные операции Мастера отчетов таковы:

  • группировка сотрудников, включая вложенные группировки
  • отбор сотрудников (фильтрация)
  • вывод дополнительных колонок по сотруднику (граф)

1-й шаг Мастера отчетов по сотрудникам выглядит следующим образом:

Пользователь указывает, как сгруппировать сотрудников. Причем он может указать несколько группировок, расставив их в нужном порядке. Если он не указывает группировку "Сотрудник", то конкретные фамилии не выводятся, а выводится только количество сотрудников в каждой группе.

2-й шаг Мастера отчетов по сотрудникам выглядит следующим образом:

Здесь пользователь может отфильтровать по категории, объекту или должности, по дате приема, по дате увольнения и по другим параметрам. Если он указывает несколько условий, то критерии отбора складываются (логическая операция И).

2-й шаг Мастера отчетов по сотрудникам выглядит следующим образом:

На этом шаге пользователь задает вывод дополнительных сведений по сотруднику. Это возможно если только на первом шаге была задействована группировка "Сотрудник". Пользователь помечает галочками те колонки, которые он хочет видеть в отчете.

Примеры работы Мастера приведены ниже:

1. Указаны группировка Категория и группировка Сотрудник

2. Указана группировка Сотрудник, фильтр по объекту ИТР и дополнительные графы Оклад и Ставка.

2. Указана группировка Категория и группировка Должность (группировка Сотрудник не указана, поэтому фамилии сотрудников не выводятся, а подсчитывается количество сотрудников в данной группе).

Что можно скачать

Скачать конфигурацию "Кадровый учет в строительной организации" (200К)

Скачать документацию на эту конфигурацию (30К) (когда-то это был курсовик)

Данная программа реально работает в одной строительной организации. Естественно, что она включает в себя еще подсистему расчета зарплаты. Для учебных целей расчет зарплаты был аккуратно вырезан и осталась только подсистема учета кадров.


Описание задачи "Кадровый учет" | Учебник по 1С | mista.ru

Описание задачи "Кадровый учет"

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Кадровый учет / Описание задачи
На любом предприятии есть отдел кадров, который занимается учетом сотрудников предприятия. Мы рассмотрим строительное управление.

Слово "учет" подразумевает прием сотрудника на работу, отслеживание его состояния в течение периода его работы и, наконец, увольнение сотрудника с работы. Дополнительно, отдел кадров должен формировать много отчетов перед бухгалтерией и внешними организациями, например, Пенсионным фондом и статистическими органами. Работа отдела кадров регламентирована законодательством (например, КЗоТ) и коллективным договором. В частности, предопределены формы приказов о приеме и увольнении, личные карточки сотрудников, формы отчетов.

Функции отдела кадров

1. Прием на работу новых сотрудников
2. Увольнение сотрудников
3. Кадровое перемещение

  • изменение категории
  • изменение должности/специальности
  • изменение разряда
  • изменение графика работы
  • перевод на другой объект

4. Воинский учет
5. Учет членства в профсоюзе
6. Оформление отпусков
7. Оформление больничных листов
8. Ведение штатного расписания
9. Отчетность

  • перед бухгалтерией
  • перед Пенсионным фондом
  • перед статистическими органами
  • перед руководством

На предприятии работает около 600 человек. Из них около 100 человек работают в офисе и начальниками объектов. За год через предприятие проходит до 1000 человек. В среднем в день отделом кадров выпускается 20-30 документов. Будущие пользователи — это 3 сотрудника отдела кадров и руководство. В перспективе — единая база данных с бухгалтерией.

Основные исходящие документы

Основные входящие документы

Еще отдел кадров обязан вести личную карточку на каждого сотрудника.
Эти входящие и исходящие документы составляют 95% работы отдела кадров.

Описание документопотоков

1. Отдел кадров — бухгалтерия.

Отдел кадров направляет в бухгалтерию следующие документы:

  • приказы о приеме на работу
  • приказы о кадровом перемещении
  • приказы об увольнении
  • приказы по отпуску
  • больничные листы

В перспективе при разработке информационной системы с единой базой данных для отдела кадров и бухгалтерии некоторые документы не нужно будет направлять в бухгалтерию, что позволит сократить бумажный документооборот, количество ошибок и повысит производительность работы.

2. Отдел кадров — Пенсионный фонд

Между отделом кадров и Пенсионным фондом существует целый поток из нескольких типов документов в ту и другую сторону, причем часть из них в электронной форме (на дискете или по электронной почте с цифровой подписью).

Перечень документов, связанных с Пенсионным фондом:

  1. Страховое свидетельство государственного пенсионного страхования
  2. Анкета застрахованного лица
  3. Заявление об обмене Страхового свидетельства
  4. Заявление о выдаче дубликата Страхового свидетельства
  5. Листок исправлений
  6. Запрос об уточнении сведений
  7. Справка о смерти
  8. Опись документов, передаваемых работодателем
  9. Сопроводительная ведомость
  10. Справка о соответствии
  11. Индивидуальные сведения о трудовом стаже, заработке и начисленных страховых взносах застрахованного лица

Основными из них являются "Анкета застрахованного лица" и "Индивидуальные сведения". Анкета заполняется на вновь принятого сотрудника, если ему еще не присвоен страховой номер и направляется в Пенсионный фонд. Пенсионный фонд присваивает застрахованному лицу регистрационный номер и возвращает его обратно на предприятие. Индивидуальные сведения подготавливаются ежегодно и содержат сведения о застрахованных лицах, их заработке и стаже. При передаче документов в Пенсионный фонд предприятие также формирует "Опись документов".

Для учета застрахованных лиц Пенсионный фонд предлагает собственную программу ОАЗИС, которая позволяет формировать все необходимые документы в бумажной и электронной форме.

4. Отдел кадров — руководство

Руководство вправе потребовать от отдела кадров отчет произвольной структуры в управленческих целях. Дата запроса заранее не определена, структура отчета может быть совершенно произвольной, хотя существуют некоторые "любимые" отчеты руководства.

Можно выделить следующие основные типы отчетов руководству:

  • Индивидуальные сведения по сотруднику
  • Списки сотрудников
  • События (приемы, увольнения, перемещения, больничные…)
  • Штатное расписание

5. Отдел кадров — органы статистики

С разной периодичностью отдел кадров обязан представлять в статистические органы несколько отчетов. Среди них есть такие, как "Принятые / Уволенные", "Отчет по среднесписочной численности" и т.д.

Описание функций отдела кадров

Прием на работу

При приеме на работу нового сотрудника на основании его заявления начальником предприятия подписывается "Приказ о приеме на работу". Форма этого приказа и пример заявления приводятся в приложении.

Последовательность событий при приеме на работу такова:

  1. Прием на работу нового сотрудника устно согласуется с начальником предприятия и начальником объекта, на который принимается сотрудник, также определяется его должность / специальность и оклад, если он отличен от положенного по штатному расписанию.
  2. Сотрудник пишет заявление о приеме на работу.
  3. Отдел кадров подготавливает приказ о приеме на работу.
  4. Сотрудник подписывает приказ о приеме ("с приказом ознакомлен").
  5. Приказ о приеме направляется на подпись начальнику.
  6. Начальник подписывает приказ и возвращает его в отдел кадров.

Приказ о приеме на работу содержит следующие реквизиты:

  • № документа
  • Дата документа
  • ФИО
  • Дата приема
  • Сведения о сотруднике (Категория, Объект, Должность, Оклад и т.д.)

Приказ о приеме подготавливается в отделе кадров и направляется на подпись начальнику. После того, как приказ подписан начальником и сотрудником, документ приобретает юридическую силу и сотрудник считается работающим, начиная с даты приема.

Категория — присваивается в соответствии с принятой на предприятии классификацией. Классификация по категориям утверждается руководством предприятия приказом. Перчень категорий может меняться примерно раз в год. В нашем случае на 1 января 2000 г. на предприятии действовали следующие категории:

№ | Категория
1 | Руководители и специалисты
2 | Линейные ИТР
3 | Рабочие постоянные
4 | Рабочие временные
5 | Совместители
6 | Учащиеся

Под "линейными ИТР" понимаются начальники объектов. Рабочие временные принимаются на определенный срок. Для совместителей работа на этом предприятии является неосновной. Учащиеся — это сотрудники, которые учатся и проходят практику на этом предприятии. Руководители и специалисты, а также линейные ИТР "сидят" на окладе, тогда как остальные категории работают по тарифу, который напрямую зависит от разряда.

Для временных рабочих, совместителей и учащихся обязательно указывается реквизит "Конец контракта", так как они принимаются на определенный срок: учащиеся — на время прохождения практики, временные рабочие и совместители — обычно на срок 3 или 6 месяцев, но может быть и другой, совершенно произвольный.

Объект — это место работы сотрудника. Для тех сотрудников, которые работают в головном офисе предприятия, указывается объект "ИТР". Список объектов может меняться, так как появляются новые заказы и выполняются старые. Объекты могут быть открыты или закрыты старшим инспектором отдела кадров по распоряжению руководства. Объекты открываются/закрываются примерно раз в 2 месяца.

На 1 января 2000 года на предприятии были открыты следующие объекты:

№ пп | Объект
1 | ИТР
2 | Акуловский канал
3 | Аэротенки
4 | Вент.группа
5 | Вторичные отстойники
6 | Гараж-стоянка в Бутово
7 | Гараж-стоянка Волоколамское ш.
8 | Депонирование осадка
9 | Зеленоград
10 | Автобаза Солнцево
11 | Кафе-Экспресс
12 | Марьинский парк
13 | Минтопэнерго
14 | Монтажный участок
15 | ОГМ
16 | Переход Рижская площадь
17 | ПКЛ Люблино
18 | Подземный гараж Гарибальди

Должность — это должность или специальность нового сотрудника. У каждой должности или специальности есть соответствующие ей условия труда. Для категорий "Руководители и специалисты" и "Линейные ИТР" (коды 1 и 2) указывается должность, для остальных категорий — специальность и разряд.

Вот некоторые должности и специальности, используемые на предприятии, с примерным кодом по «Общероссийскому Классификатору Профессий, Должностей и Тарифных Разрядов» (ОКПДТР):

Код ОКПДТР | Должность / Специальность | Условия труда
 | специальности: |
1 0256 2 | Арматурщик | нормальные
1 0056 7 | Бетонщик | нормальные
1 1563 2 | Электросварщик | вредные
1 0564 5 | Монтажник | нормальные
 | должности: |
2 0568 4 | Начальник | нормальные
2 0088 8 | Бухгалтер | нормальные
2 0089 2 | бухгалтер-кассир | нормальные
2 0112 8 | инженер-программист | нормальные

Блок | X | XXXX | X
описание | 1 — профессия 2 — должность | серийно-порядковый номер объекта классификации | Контрольное число.

Контрольное число рассчитывается следующим образом:

Например, дан код 2 0112
Веса позиций: 1 2345

Сумма произведений цифр кода на вес позиции: 2*1 + 0*2 + 1*3 + 1*4 + 2*5 = 19

Полученное число делится по модулю на 11. Т.е. остаток от деления 19 на 11 и будет контрольным числом 8. Если остаток = 10, то контрольное число = 0.

Условия труда по ОКПДТР бывают

  • нормальные,
  • тяжелые или вредные,
  • особо тяжелые или особо вредные.

Условия труда по каждой специальности определяются в соотвествии со "Справочником о льготном пенсионном обеспечении по спискам №1 и 2". Причем для тех специальностей, которые вошли в Список №1, условия труда "особо тяжелые или особо вредные", для Списка №2 — "тяжелые или вредные".

Для вредных условий труда на предприятии коллективным договором предусмотрены некоторые льготы: доплата "молоко" и дополнительный отпуск 6 дней.

Разряд — отражает квалификацию рабочего по специальности. Для категорий "Руководители и специалисты" и "Линейные ИТР" (коды 1 и 2) разряд не указывается. От разряда рабочих напрямую зависит почасовая тарифная ставка, по которой будет работать новый сотрудник. Тарифная сетка утверждается руководством предприятия и может иногда меняться (примерно, раз в полгода).

На 1 января 2000 года на предприятии действовала следующая тарифная сетка:

Код | Разряд | Тариф (руб/час)
1 | Первый | 3,72
2 | Второй | 4,00
3 | Третий | 4,42
4 | Четвертый | 4,97
5 | Пятый | 5,73
6 | Шестой | 6,69

Оклад — устанавливается для категорий "Руководители и специалисты" и "Линейные ИТР" (коды 1 и 2). Оклад определяется по утвержденному руководством штатному расписанию, а может устанавливаться произвольно для каждого конкретного сотрудника. При это штатное расписание используется лишь в качестве ориентира. В действительности у 90% персонала оклад установлен индивидуально. Штатное расписание действует ТОЛЬКО для первых двух категорий и выглядит следующим образом:

Штатное расписание для категорий 1 и 2:

Код ОКПДТР | Название должности | Ставки | Оклад
Руководство
2 0568 4 | Начальник предприятия | 1 | 10 000
2 0672 7 | Главный инженер | 1 | 7 000
Бухгалтерия
2 0088 8 | Бухгалтер | 4 | 5 000
Компьютерный отдел
2 0112 8 | Инженер-программист | 2 | 5 000
 | … |  |

Оклад по штатному расписанию имеет рекомендательный характер и для конкретного сотрудника оклад может быть установлен индивидуально.

Испытательный срок — сотрудники 1, 2, 3 категорий могут быть приняты на работу с испытательным сроком (1, 3 или 6 месяцев). По окончании испытательного срока сотрудник или явно увольняется приказом об увольнении, или продолжает работать уже как постоянный работник.

График работы — обычно сотрудник работает по 8-часовому графику. Но сотрудники с возрастом до 16 лет работают по 6-часовому графику, от 16 до 18 лет — по 7-часовому графику. Совместители работают по 4-часовому графику, причем для них указывается время работы — или "с 18:00 до 22:00", или "с 8:00 до 12:00".

Остальные реквизиты, встречающиеся в форме приказа, заполняются на основе вышеприведенной информации. Характер работы — для 1, 2, 3 категорий "постоянно", для остальных "на определенный срок". Вид работ — для 1, 2, 3, 4 категорий — "основная", для остальных категорий — "по совместительству". Режим труда — для графиков 8, 7, 6 часов — "полное рабочее время", для графика 4 часа — "неполное рабочее время". Реквизит структурное подразделение на нашем предприятии не заполняется. Форма оплаты труда для всех сотрудников "повременная". Система оплаты труда — для 1, 2 категорий — "оклад", для остальных категорий — "тариф".

Увольнение

Увольнение сотрудника оформляется "Приказом об увольнении". Форма приказа приводится в приложении. Сотрудник может инициировать приказ своим заявлением об увольнении.

В приказе об увольнении указывается:

  • № документа
  • Дата документа
  • ФИО сотрудника
  • Дата увольнения
  • Причина увольнения
  • … и другие сведения о сотруднике (Категория, Объект и т.д.).

Существуют следующие причины увольнения (этот список неполный):

Статья* | Причина увольнения
ст. 33 КЗОТ, п.4 | За прогулы,
ст. 23 КЗОТ | Неудовлетворительное окончание испытательного срока
ст. 29 КЗОТ, п.2 | Окончание срока работ,
ст. 29 КЗОТ, п.5 | Перевод,
ст. 31 КЗОТ | По собственному желанию,
ст. 29 КЗОТ, п.1 | По соглашению сторон,
ст. 33 КЗОТ, п.7 | Появление на работе в нетрезвом состоянии,
ст. 33 КЗОТ п.2 | Уход на инвалидность,
ст. 31 КЗОТ | Уход на пенсию,
ст. 29 КЗОТ, п.3 | Уход на службу в армию,
ст.33 КЗОТ, п.3 | Систематическое неисполнение работником служебных обязанностей,
ст. 33 КЗОТ, п.2 | Несоответствие работника занимаемой должности,
ст. 32 КЗОТ | По уходу за детьми до 14 лет,
ст. 32 КЗОТ | По уходу за инвалидом,
ст. 37 КЗОТ | По требованию профсоюзного органа,
ст. 31 КЗОТ | Учеба на дневном отделении,
ст. 33 КЗОТ, п.1 | По сокращению штатов,
… | …
* с 1 февраля 2002 года вступил в силу новый Трудовой кодекс РФ.

Кадровое перемещение

Приказ о кадровом перемещении выпускается при изменении у сотрудника оклада, разряда (а значит, тарифа), категории, должности/специальности, объекта, графика работы…

Перемещение может быть временное, т.е. на определенный срок.

Документ содержит следующие реквизиты:

  • № документа
  • Дата документа
  • ФИО сотрудника
  • Дата перемещения
  • Окончание (если перемещение временное)
  • Сведения о старом месте работы
  • Сведения о новом месте работы
  • Основание перемещения

Документ Кадровое перемещение очень похож на документ Приказ о приеме на работу. Фактически сотрудник "принимается" на новое место работы, следовательно действуют все те деловые правила, которые относятся к приказу о приеме.

Кадровые данные о сотруднике

При приеме на работу обычно сразу же заполняется "Личная карточка" сотрудника. Личная карточка содержит наиболее полную информацию о сотруднике и рассчитана на ее ведение в течение периода работы сотрудника. Форма личной карточки приводится в приложении.

В личной карточке содержатся следующие реквизиты:

  • ФИО сотрудника
  • Дата приема
  • Дата увольнения
  • Категория
  • Объект
  • Должность / Специальность
  • Разряд
  • Оклад / Тариф
  • График работы
  • Паспорт (вид документа, серия, номер, дата выдачи, кем выдан)
  • Адрес (страна, индекс, регион, город, насел. пункт, район, улица, дом, корпус, квартира)
  • Телефон
  • Дата рождения
  • Пол
  • Семейное положение
  • Вхождение в профсоюз
  • Непрерывный стаж
  • Воинский учет (звание, военкомат, годность, ВУС, спецучет)
  • Приказы по сотруднику (прием, отпуска, перемещения, увольнение)
  • Страховой номер ПФ
  • ИНН
  • Образование
  • и многое другое…

Приказ по отпуску

Данный документ выпускается в случае, если сотрудник уходит в отпуск по какой-либо причине и формируется на основе заявления сотрудника на отпуск.

Приказ по отпуску содержит следующие реквизиты

  • № документа
  • Дата документа
  • ФИО
  • Сведения о сотруднике
  • (Объект, Категория, Должность/Специальность, разряд для рабочих, Тариф/Оклад, Условия труда, График работы,…)
  • Основание отпуска ("График отпусков", "Заявление Иванова И.И.")
  • Дата начала отпуска
  • Дата окончания отпуска
  • Тип отпуска (очередной, без сохранения з/п, учебный)
  • Тип расчета отпуска (по рабочим дням, по календ. дням)
  • Рабочий год, за который предоставляется отпуск (при очередном отпуске)
  • Число дней основного отпуска
  • Число дней дополнительного отпуска (если есть)
  • Основание дополнительного отпуска

Приказ по отпуску подписывается сотрудником ("с приказом ознакомлен"), начальником объекта и руководителем предприятия.

Очередной отпуск обычно рассчитывается по шестидневке (тип расчета отпуска). Это значит, что субботы считаются рабочими днями и тоже оплачиваются, а воскресенья и праздники пропускаются. Если возраст сотрудника менее 18 лет, то ему предоставляется очередной отпуск на 30 рабочих дней.

Отпуск без сохранения зарплаты и учебный отпуск рассчитываются по календарным дням, т.е. воскресенья и праздники также учитываются при расчете продолжительности отпуска. Очередной отпуск обычно предоставляется на 24 рабочих дня за определенный рабочий год (например за 2000 год).

Если сотрудник работает с вредными условиями труда, то ему по коллективному договору предоставляется дополнительный отпуск на 6 рабочих дней.

Больничный лист

Больничный лист — это документ, который подтверждает болезнь сотрудника. Во время его болезни ему выплачивается заработная плата, рассчитанная с учетом процента оплаты.

Процент оплаты зависит от стажа так:

  • - если стаж работы менее 5 лет, то 60%,
  • - если стаж работы от 5 до 8 лет, то 80%,
  • - если стаж работы от 8 лет, то 100%,

Документ больничный лист выпускается медицинским учреждением на специальной бумаге. Задача отдела кадров, рассчитать процент оплаты, зависящий от стажа, и направить этот документ в бухгалтерию.

Анкета застрахованного лица в ПФ

Заполняется на вновь принятых сотрудников, у которых еще нет страхового номера ПФ. Затем "Анкета…" направляется в Пенсионный фонд, который присваивает лицу страховой номер и возвращает его обратно (карточка пенсионного страхования и сопроводительная ведомость).

Анкета застрахованного лица содержит следующие реквизиты:

  • № анкеты
  • Дата составления
  • Фамилия, Имя, Отчество
  • Пол
  • Место рождения (тип, город, район, область, страна)
  • Адрес регистрации
  • Адрес проживания фактический (если отличается от адреса регистр.)
  • Паспорт (тип док, серия, номер, кем выдан, дата выдачи)
  • Телефон

Программа ОАЗИС позволяет сформировать анкету, напечатать ее на бумаге и сформировать пачки документов для передачи в ПФ на дискете.

Индивидуальные сведения в ПФ

Ежегодно в Пенсионный фонд сдаются индивидуальные сведения по застрахованным лицам. В этом документе содержатся следующие реквизиты:

  • № документа
  • Дата составления
  • Фамилия, Имя, Отчество
  • Страховой номер
  • Сведения о застрахов. лице
  • Сведения о заработке и отчислениях в ПФ
  • Сведения о стаже

Программа ОАЗИС позволяет сформировать индивидуальные сведения, напечатать их на бумаге и сформировать пачки документов для передачи в ПФ на дискете.

Заявление на присвоение ИНН

Заполняется на вновь принятых сотрудников, у которых еще нет Идентификационного Номера Налогоплательщика (ИНН). Затем заявление направляется в Налоговую инспекцию, которая присваивает лицу номер и возвращает его обратно на предприятие.

Прочие документы и отчеты

Кадровая часть справки о доходах
Кадровая часть налоговой карточки
Отчеты руководству
Отчеты в органы статистики
Прочие (в банк, военкоматы, юбиляры, премии, благодарности, путевки, профсоюз, субботы, ведомости по б/л, внутр. док. и отчеты, табели учета рабочего времени, трудовые книжки …)


Встроенный язык | Учебник по 1С | mista.ru

Встроенный язык

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Встроенный язык
Подходит начинающий програмист к хакеру и показывает программу на Бейсике.
- Подскажите, пожалуйста, в чем у меня ошибка?
- В ДНК, - вздыхает хакер.

Язык 1С очень похож на Бейсик. В 1С все ключевые слова можно писать по-русски.

Конструкция языка 1С

Примечание

Процедура РассчитатьНалог(Сотрудник, НекаяДата)

КонецПроцедуры

Простая процедура. После слова КонецПроцедуры точка с запятой не нужна, потому что это не оператор, а операторная скобка

Функция РассчитатьНалог(Сотрудник, НекаяДата)

Возврат Налог;

КонецФункции

Функция должна обязательно возвращать результат.

Если Оклад > 10000 Тогда
......Результат = "Жить можно";
Иначе
......Результат = "Плохо";
КонецЕсли;

Простое условие. После слова КонецЕсли должна быть точка с запятой, потому что так заканчивается оператор Если
Результат = ?(Оклад > 10000, "Нормально","Плохо"); | Сокращенное Если.
Если Оклад > 10000 Тогда
......Результат = "Жить можно";

ИначеЕсли Оклад > 5000 Тогда
......Результат = "Плохо";

Иначе
......Результат = "Так жить нельзя";
КонецЕсли; 		Множественное условие. Если первое условие не выполняется, то проверяется второе. Если второе условие не выполняется, то третье. Если ни одно из условий не выполняется то выполняется блок Иначе.

Если (Оклад > 10000) И (КодКатегории = 2) Тогда

КонецЕсли;

В составном логическом выражении скобки обязательны! (в версии 8.0 необязательны)
Пока Номер <= 50 Цикл

КонецЦикла;

 Простой цикл Пока (цикл с неизвестным числом повторений). После слова КонецЦикла должна быть точка с запятой, потому что так заканчивается оператор Пока
Для Номер = 1 По 50 Цикл

КонецЦикла;

Простой цикл Для (цикл с известным числом повторений).
В версии 8.0 есть еще цикл Для Каждого (for each).

Перейти ~метка;

<...>

~метка:

Так оформляются метки и оператор безусловного перехода (GOTO). Чем меньше в вашей программе будет меток, тем лучше.

Пока <условие> Цикл

Если <условие> Тогда
........Продолжить;
КонецЕсли;

КонецЦикла;

 Оператор Продолжить передает управление в начало цикла.

Пока <условие> Цикл

Если <условие> Тогда
.........Прервать;
КонецЕсли;

КонецЦикла;

 Оператор Прервать производит досрочный выход из цикла. Управление передается на операторы после цикла.
Перем Сотр; | Явное объявление переменной.
Номер = 1; | Переменные можно не объявлять явно. При первом присвоении значения создается новая переменная.
ФИО = Фамилия + " " + Имя + " " + Отчество; | Сложение строк (конкатенация)
НекаяДата = '01.01.2002'; | Переменная, которая хранит дату.
Перем глТекущийПользователь Экспорт; | Объявление глобальной переменной в Глобальном модуле. Такие переменные доступны в любом месте конфигурации.

Попытка

а = 10 / 0;

Исключение

Предупреждение("Деление на ноль!");

КонецПопытки;

Обработка исключительных ситуаций.

Если во время выполнения операторов между словами Попытка и Исключение произошла ошибка, то управление передается на операторы между словами Исключение и КонецПопытки

Если ошибки не было, то управление передается на операторы после слова КонецПопытки.
//это комментарий | Так оформляются комментарии.
СпрСотр.ВыбратьЭлементы(); | Вызов метода объекта производится как обычно, через точку.


Учебник 1С...

Мини-зарплата (пример)

Постановка задачи
 Объекты конфигурации
Минимальный кадровый учет
 Налоговые льготы сотрудника
 Расчет зарплаты
 Отчеты по зарплате
Что можно скачать

 Разговаривают между собой два босса. Один другому говорит:
- Представляешь! Я своим сотрудникам уже полгода зарплату не плачу, а они всё ходят и ходят на работу.
- А ты сделай вход платным...

Постановка задачи
Требуется создать простейшую систему расчета зарплаты, удовлетворяющую следующим минимальным требованиям:

  1. Минимальный кадровый учет (справочник Сотрудники, документы Прием, Перемещение, Увольнение, журнал Кадровые документы)
  2. Две категории сотрудников: "Руководители и специалисты" (сидят на окладе), "Рабочие" (работают по тарифу)
  3. Возможность учета невыходов сотрудника на работу (например, прогулы).
  4. Ввод премий сотрудникам.
  5. Расчет подоходного налога с учетом налоговых льгот (стандартных вычетов).
  6. Отчетность по зарплате (ведомость на выплату зарплаты, свод, расчетные листочки, лицевые счета)

Объекты конфигурации
В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Константы
  • НазваниеОрганизации
  • СтавкаПН (периодич.)
Справочники
  • Сотрудники
  • НалоговыеЛьготы (подчинен спр.Сотрудники)
  • Категории
  • Подразделения
  • Должности
  • Разряды
  • ТипНалоговойЛьготы
  • ОснованияУвольнения
Перечисления

нет
Документы
  • ПриемНаРаботу
  • Перемещение
  • Увольнение
  • НачалоМесяца
  • ВводНевыходов
  • ВводПремий
Журналы документов
  • КадровыеДокументы
  • Премии
  • Отклонения
  • Системные
Отчеты
  • ВедомостьНаЗарплату
  • РасчетныеЛисточки
  • Свод
  • ЛицевыеСчета
  • ПоискВидаРасчета
Календари
  • Табель_8час
  • Табель_7час
Журналы расчетов
  • Зарплата
Обработки
  • РасчетЗарплаты
Виды расчета
  • ПоОкладу
  • ПоТарифу
  • Невыход
  • Премия
  • СтандВычетНаСебя
  • СтандВычетНаДетей
  • Премия
  • Подоходный налог
  • НаРуки
Группы расчетов
  • ВсеНачисления
  • ВсеУдержания
  • ОблагаетсяПН
  • ВсеВычеты

Минимальный кадровый учет

В конфигурации есть 2-хуровневый справочник Сотрудники, содержащий две системные группы: Работающие и Уволенные. Ввод нового сотрудника производится документом "Прием на работу".

В конфигурации есть три кадровых документа, обеспечивающих самые обязательные операции по движению кадров: "Прием на работу", "Перемещение", "Увольнение". Эти документы хранятся в журнале "Кадровые документы".

По каждому сотруднику хранится следующая информация:

  • Табельный номер (реквизит Код)
  • ФИО (реквизит Наименование)
  • Категория*
  • Подразделение*
  • Должность*
  • Разряд*
  • Оклад*
  • Календарь*
  • Дата приема
  • Дата увольнения

Реквизиты, отмеченные звездочкой, являются периодическими. Это означает, что в программе хранится история их изменения по датам. Изменение этих реквизитов должно оформляться кадровым документом "Перемещение". Реквизиты "Дата приема" и "Дата увольнения" заполняются автоматически при проведении документов "Прием на работу" и "Увольнение". При увольнении сотрудник автоматически переходит в группу Уволенные.

Налоговые льготы сотрудника

Если у сотрудника есть право на стандартные налоговые вычеты, то их следует ввести в справочник НалоговыеЛьготы, который подчинен справочнику Сотрудники. Для этого нужно открыть справочник Сотрудники, перейти курсором на нужного сотрудника и открыть подчиненный справочник НалоговыеЛьготы.

Для каждой налоговой льготы можно указать период ее действия. Если не указывать окончание периода действия льготы, тогда она будет действовать все время, пока сотрудник не уволен.

Если у сотрудника введены налоговые льготы, тогда при проведении документа "Начало месяца" в журнал Зарплата добавляются виды расчета "СтандВычетНаСебя" и "СтандВычетНаДетей". Вычеты влияют на расчет подоходного налога.

Расчет зарплаты

Все промежуточные и окончательные результаты расчета зарплаты хранятся в журнале расчетов Зарплата. В журнале Зарплата можно включить закладки отбора сотрудников по категориям, по подразделениям или по группам справочника Сотрудники (Работающие и Уволенные).

  1. Для инициализации расчета сначала необходимо провести документ "Начало месяца", который введет в журнал Зарплата нерассчитанные записи с нулевым результатом (за исключением стандартных вычетов, которые сразу рассчитываются).
  2. Затем необходимо ввести периоды невыходов (прогулов) документом "Ввод невыходов". Этот документ вводит вид расчета "Невыход", который вытесняет виды расчета ПоОкладу и ПоТарифу.
  3. Если некоторым сотрудникам полагаются премии, то нужно провести документ "Ввод премий".
  4. После этого можно произвести расчет зарплаты обработкой "Расчет зарплаты". Существует два режима расчета зарплаты: только начисления и окончательный расчет. При окончательном расчете рассчитываются все виды расчетов, включая подоходный налог и сумму "на руки".
  5. После окончательного расчета можно сформировать отчеты по зарплате.
  6. Для закрытия месяца следует сменить период расчета в журнале Зарплата. Все записи станут архивными и их уже нельзя будет корректировать. Если все-таки это потребуется, то для корректировки результатов расчета предыдущих месяцев следует вводить новые записи-сторно, у которых период действия распространяется на прошлые месяцы. Т.е. запись введена, например, в феврале, а период действия у нее - январь.

Отчеты по зарплате

В конфигурации есть следующие отчеты по зарплате:

Отчет | Описание
Ведомость на зарплату | Предназначен для кассира и показывает сумму "на руки" по каждому сотруднику.
Лицевые счета | Показывает промежуточные и конечные результаты расчета зарплаты по всем сотрудникам. Можно задать фильтр по категории и/или подразделению.
Расчетные листочки | Показывает промежуточные и конечные результаты расчета зарплаты по конкретному сотруднику. Расчетный листочек выдается сотруднику перед выдачей зарплаты для ознакомления. Можно распечатать листочек только для указанного сотрудника или по всем сотрудникам сразу. Можно задать фильтр и/или группировку по категории и подразделению.
Свод | Показывает сводные результаты расчета с различной группировкой. Строка отчета соответствует виду расчета или группе расчетов. Колонка отчета соответствует категории или подразделению. По строке подводится итог. Можно задать фильтр по категории и/или подразделению.
Поиск вида расчета | Позволяет выбрать всех сотрудников с определенным видом расчета или группой расчетов. Пользователь может задать фильтр по категории и/или подразделению. Можно задать любой период и при необходимости разбить его по месяцам. Есть возможность вывести дополнительные графы по сотруднику.

Что можно скачать

Скачать конфигурацию "Мини-зарплата". (80К)

В программе во всех модулях примерно 800 строк, поэтому разобраться в ней вам вполне по силам. Самый большой модуль (отчет Свод) содержит примерно 150 строк. Для сравнения скажу, что типовая конфигурация "Зарплата и Кадры" содержит больше 50 000 строк.

Если вам понравились отчеты или некоторые приемы программирования, то вы можете включить их в свои программы. Никаких запретов на использование конфигурации нет. Естественно, все под вашу ответственность.

1C:TOP-100
Рейтинг ресурсов 1С
Rambler's Top100


События | Учебник по 1С | mista.ru

События

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / События
Назначение
Виды процедур
 Параметры
 СтатусВозврата 		Нострадамус: будущее предопределено, но не окончательно!

Предопределенные процедуры являются особыми процедурами системы 1С. Такие процедуры имеют заранее определенное имя и вызываются системой при наступлении определенных событий. Т.е. можно сказать, что предопределенные процедуры являются обработчиками событий.

Виды предопределенных процедур

В системе 1С существуют следующие виды предопределенных процедур:

Вид предопределенных процедур | Примеры
Предопределенные процедуры глобального модуля | ПриНачалеРаботыСистемы() ПриЗавершенииРаботыСистемы() ПриЗаписиКонстанты() ПриЗаписиИстории() ПриСменеРасчетногоПериода()
Модуль формы списка справочника | ПриОткрытии() ПриЗакрытии() ПриЗаписи() ПриВводеСтроки() ПриВыбореРодителя() ПриВыбореВладельца()
Модуль формы элемента справочника | ВводНового() ПриЗаписи()
Модуль журнала документов | ПриУстановкеИнтервала() ПриУстановкеОтбора()
Модуль формы документа | ВводНового() ВводНаОсновании() ПриЗаписи() ПриВводеСтроки() ПриУдаленииСтроки()
Модуль документа | ОбработкаПроведения() ОбработкаУдаленияПроведения() АрхивироватьДокумент()
Модуль журнала расчетов | ПриУстановкеОтбора() ПриИсправленииРезультата() ПриВыбореВладельца()
Модуль вида расчета | ПровестиРасчет()
Модуль журнала операций | ПриУстановкеОтбора() ПриУстановкеИнтервала()
Модуль формы операции | ВводНового() ПриЗаписи() ПриВводеСтроки() ПриУдаленииСтроки()
Модуль журнала проводок | ПриУстановкеОтбора() ПриУстановкеИнтервала() ПриПоказеПроводокПоДокументу()
Предопределенные процедуры для Таблиц | ОбработкаЯчейкиТаблицы() ПриВыбореЯчейкиТаблицы()
Модуль формы списка счетов | ПриВводеСтроки() ПриВыбореРодителя() ПриЗаписи()
Модуль формы счета | ВводНового() ПриЗаписи()
Для организации подбора | ОбработкаПодбора()

Полный список предопределенных процедур и их параметров см. в Синтакс-помощнике.

Параметры предопределенных процедур

Некоторые предопределенные процедуры имеют параметры, в которые передается информация о произошедшем событии. Например, для процедуры ПриВыбореВладельца(Элемент) в параметр Элемент передается значение нового владельца.

СтатусВозврата

Если в предопределенной процедуре вызвать команду СтатусВозврата(0), то действие не будет выполнено, например, документ не будет записан или форма не откроется. Следует помнить, что после вызова СтатусВозврата(0), предопределенная процедура продолжает свое выполнение. Чтобы выйти из процедуры, используйте команду Возврат.


Регистры | Учебник по 1С | mista.ru

Регистры

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Регистры
Назначение регистров
Запись движений
Обращение к итогам
Обращение к движениям
Фильтрация движений
Временный расчет
Запрос к регистру 		Народная примета: если программист в девять утра уже на работе, значит, он еще на работе.

Назначение регистров

Регистры - это таблицы для накопления оперативных данных и получения сводной информации.

Данные в регистры добавляются только при проведении документов. Сведения из регистров используются для формирования отчетов. Классическая схема использования регистров в 1С:Предприятие выглядит следующим образом:

Документы => Регистры => Отчеты

Измерения и ресурсы

Основная проблема при проектировании регистров - это определение его структуры. Структура регистра должна быть такова, чтобы извлекать из него нужную информацию без утомительной обработки.

Измерения регистра - это то, в каких разрезах требуется хранение информации.
Ресурсы регистра - это количественные или суммовые данные, которые хранятся в регистре.

Предположим, что регистр «Остатки товаров» должен содержать сведения о количестве и стоимости каждого товара на каждом складе. В идеологии системы 1С:Предприятие регистр такого вида представляет собой прямоугольную систему координат на одной оси которой находятся склады, на другой — товары, а на пересечении конкретного склада и конкретного товара находятся цифры количества товара и стоимости товара.

Регистр: Остатки товаров
Измерения: Товар, Склад
Ресурсы: Кол-во, Стоимость

С помощью методов встроенного языка мы можем легко получить ответы на вопросы:

  • остаток конкретного товара на конкретном складе
  • остаток конкретного товара на всех складах
  • стоимость всех товаров на конкретном складе

Движения в регистрах

В табличном виде регистр ОстаткиТоваров представляется следующим образом:

 | Товар | Склад | Кол-во | Стоимость
приход | Товар4 | Склад1 | 15 | 200
расход | Товар4 | Склад1 | 10 | 100
приход | Товар4 | Склад1 | 5 | 50
... | ... | ... | ... | ...

Одна строка из этой таблицы называется "движение". Движения в регистрах создаются только при проведении документов. В регистре, кроме измерений и ресурсов, можно задать реквизиты. Реквизиты - это дополнительные сведения, сопровождающие движение. Методами встроенного языка можно отбирать движения с заданным значением реквизита.

Виды регистров

В системе 1С:Предприятие возможно использование регистров двух типов: регистры остатков и регистры оборотов. Разница между ними понятна из их названия и заключается в характере хранимой информации: в регистрах остатков всегда хранится информация о конечном состоянии средств, а в регистрах оборотов, образно выражаясь, — как это состояние было достигнуто.

Если из регистра нужно быстро получать остаток чего-либо на текущий момент, тогда нужно сделать регистр остатков. Если из регистра нужно быстро получать приход или расход чего-либо за период, тогда нужно сделать оборотный регистр.

Регистры остатков

Рассмотрим в качестве примера отслеживание взаиморасчетов с покупателями товаров, которые производит или продает предприятие.

Для того чтобы оперативно получать информацию о взаимной задолженности предприятия и покупателя, потребуется регистр «Взаиморасчеты», в котором для каждого покупателя будет храниться сумма задолженности. При совершении хозяйственной операции состояние регистра будет соответствующим образом изменяться, каждый раз отражая текущее состояние взаиморасчетов. Регистр «Взаиморасчеты» — это регистр остатков.

Регистры оборотов

Однако, легко получить информацию об объеме закупок, совершенных данным покупателем за какой-либо период времени, из регистра «Взаиморасчеты» нельзя. Можно проанализировать все движения, имеющие отношение к данному покупателю, и вычислить общую сумму закупок. Но, когда необходимо получать эти сведения оперативно (например, по условиям договора при достижении определенного объема закупок покупателю должна предоставляться скидка), такой способ, конечно же, не подходит.

В этом случае решением проблемы может быть использование регистра оборотов. В таком регистре — назовем его «Объем закупок» — в разрезе покупателей будет храниться информация об объеме закупок (об обороте покупателя). При создании регистра оборотов можно указывать, с какой периодичностью будет накапливаться информация: день, неделя, месяц и так далее.

Теперь, при совершении хозяйственных операций, необходимо будет изменять не только состояние регистра «Взаиморасчеты», но и регистр «Объем закупок». В этот регистр при совершении клиентом каждой покупки будет заноситься информация о сумме покупки. В результате в регистре «Объем закупок» будет постоянно накапливаться информация об общем объеме закупок клиента.

Основы программирования

Регистры, используемые в примерах:
Оборотный регистр Доходы Измерения: Клиент, Товар Ресурсы: Доход Реквизиты: нет Периодичность: День | Регистр остатков Товары Измерения: Товар, Склад Ресурсы: Количество, Стоимость Реквизиты: нет
Хранит доходы от продаж за день в разрезе клиентов и товаров. | Хранит остатки товаров на каждом складе в количественном и суммовом выражении.

Запись движений в регистр остатков
(только при проведении документа)р.Доходы.ДвижениеПриход(Покупатель,КупленныйТовар,СуммаПокупки)

Методы ДвижениеПриходВыполнить и ДвижениеРасходВыполнить
Пример:

Регистр.Доходы.Клиент
              = Покупатель;
Регистр.Доходы.Товар = КупленныйТовар;
Регистр.Доходы.Доход = СуммаПокупки;
Регистр.Доходы.ДвижениеПриходВыполнить();

Запись движений в оборотный регистр
(только при проведении документа)

1. Метод Движение

Пример: Регистр.Товары.Движение (ПоступившийТовар, ТекСклад, КолвоПоНакладной, СуммаПоНакладной)

2. Метод ДвижениеВыполнить
Пример:
Регистр.Товары.Товар = ПоступившийТовар;
Регистр.Товары.Склад = ТекСклад;
Регистр.Товары.Количество = КолвоПоНакладной;
Регистр.Товары.Стоимость = СуммаПоНакладной;
Регистр.Товары.ДвижениеВыполнить();

Примечание: Если сумма или количество в движении будет отрицательным, то это движение будет расходом, иначе приходом.

Обращение к итогам регистра

1-й способ.
РегТовары = СоздатьОбъект("Регистр.Товары");
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
......Сообщить("Товар " + Строка(РегТовары.Товар) +
...................... " на складе " + Строка(РегТовары.Склад) +
...................... " кол-во: " + Строка(РегТовары.Количество) +
...................... " стоимость: " + Строка(РегТовары.Стоимость) +
КонецЦикла;

2-й способ. Выгрузка итогов в таблицу значений

РегДоходы = СоздатьОбъект("Регистр.Доходы");
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");

РегДоходы.ВыгрузитьИтоги(ТабЗнач);

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
......Сообщить("Товар " + Строка(ТабЗнач.Товар) +
...................... " на складе " + Строка(ТабЗнач.Склад) +
...................... " кол-во: " + Строка(ТабЗнач.Количество) +
...................... " стоимость: " + Строка(ТабЗнач.Стоимость) +
КонецЦикла;

Обращение к итогам оборотного регистра

 РегДоходы =
              СоздатьОбъект("Регистр.Доходы");
//установить период выборки "30 ноября 2001 года"
РегДоходы.ИспользоватьПериод(2001,11,30);

1. Метод Итог

Пример:
//получить доход за день по данному клиенту и данному товару
Доход = РегДоходы.Итог(ТекКлиент, ТекТовар, "Доход");

2. Метод Итоги
Пример:
//получить доход за день по данному клиенту и данному товару
РегДоходы.Итоги(ТекКлиент, ТекТовар);
Доход = РегДоходы.Доход;

3. Метод СводныйИтог

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить сводные итоги за день
ДоходПоКлиенту = РегДоходы.СводныйИтог(ТекКлиент,,"Доход");
ДоходПоТовару = РегДоходы.СводныйИтог(,ТекТовар,"Доход");

4. Метод СводныеИтоги

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить сводные итоги за день по клиенту
РегДоходы.СводныеИтоги(ТекКлиент,); //указано только одно измерение
ДоходПоКлиенту = РегДоходы.Доход;

//получить сводные итоги за день по товару
РегДоходы.СводныеИтоги(,ТекТовар); //указано только одно измерение
ДоходПоТовару = РегДоходы.Доход;

Обращение к итогам регистра остатков

РегТовары = СоздатьОбъект("Регистр.Товары");

1. Метод Остаток

Пример:
//получить остаток данного товара на данном складе
Колво = РегТовары.Остаток (ТекТовар, ТекСклад, "Количество");

//получить стоимость данного товара на данном складе
Стоимость = РегТовары.Остаток (ТекТовар, ТекСклад, "Стоимость");

2. Метод Остатки

Пример:
//получить остаток данного товара на данном складе по кол-ву и по сумме
РегТовары.Остатки (ТекТовар, ТекСклад);
Колво = РегТовары.Количество;
Стоимость = РегТовары.Стоимость;

3. Метод СводныйОстаток

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:
//получить остаток данного товара на всех складах
КолвоТовара = РегТовары.СводныйОстаток (ТекТовар,,"Количество");
СтоимостьТовара = РегТовары.СводныйОстаток (ТекТовар,,"Стоимость");

//получить стоимость всех товаров на данном складе
СтоимостьПоСкладу = РегТовары.СводныйОстаток (,ТекСклад,"Стоимость");

4. Метод СводныеОстатки
Пример:
//получить сводные остатки по товару
РегТовары.СводныеОстатки(ТекТовар,); //указано только одно измерение
КолвоТовара = РегТовары.Количество;
СтоимостьТовара = РегТовары.Стоимость;

//получить стоимость всех товаров на данном складе
РегТовары.СводныеИтоги(,ТекСклад); //указано только одно измерение
СтоимостьПоСкладу = РегТовары.Стоимость;

Обращение к движениям регистра

РегТовары = СоздатьОбъект("Регистр.Товары");

 РегТовары.ВыбратьДвижения(ДатаНач,
              ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
........Сообщить("Дата движения " + Строка(РегТовары.ТекущийДокумент.ДатаДок));
........Сообщить("Клиент: " + РегТовары.Клиент);
........Сообщить("Товар: " + РегТовары.Товар);
........Сообщить("Сумма: " + РегТовары.Доход);
КонецЦикла;

Фильтрация движений и итогов

РегТовары = СоздатьОбъект("Регистр.Товары");

1. Метод УстановитьФильтр

Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
...
КонецЦикла;

//выбрать все товары на данном складе
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
...
КонецЦикла;

2. Метод УстановитьЗначениеФильтра

Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьЗначениеФильтра("Склад", ТекСклад);

//далее идет выборка движений или итогов

3. Метод ВыбратьДвиженияДокумента

4. Метод ВыбратьДвиженияСОстатками
Применяется только для регистра остатков.

Временный расчет регистров

Временный расчет регистров требуется, если нужно выбрать итоги или движения на определенную дату. По умолчанию итоги регистров выдаются на Точку актуальности.

РегТовары = СоздатьОбъект("Регистр.Товары");
РегДоходы = СоздатьОбъект("Регистр.Доходы");

//установка флага временного расчета для регистров
РегТовары.ВременныйРасчет(1);
РегДоходы.ВременныйРасчет(1);

1. Метод РассчитатьРегистрыНа
Рассчитать все регистры с установленным флагом временного расчета на начало события.
(на начало даты или на момент до проведения документа)

2. Метод РассчитатьРегистрыПо
Рассчитать все регистры с установленным флагом временного расчета на конец события.
(на конец даты или на момент после проведения документа)

Запрос к регистру
В запросах к регистрам применяются функции НачОст, КонОст, Приход, Расход. В запросах к оборотным регистрам обязательно указывается Период.

ТекстЗапроса
              = "
|Период С ДатаНач По ДатаКон;
|Товар = Регистр.Доходы.Товар;
|Клиент = Регистр.Доходы.Клиент;
|Доход = Регистр.Доходы.Доход;
|Условие (Товар = ТекТовар);
|Группировка Клиент;
|Функция ПриходПоКлиенту = Приход(Доход);
|";


Отчеты | Учебник по 1С | mista.ru

Отчеты

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Отчеты
Назначение отчетов
Ссылка на таблицу
Вывод секций
Присоединить секцию
Пересечение секций 		Звонок в компьютерный магазин:
- Мы тут у вас монитор приобрели, а он ничего не печатает.

Назначение отчетов

Отчеты предназначены для вывода информации из базы данных. Отчеты похожи на документы, только эти объекты выполняют разные функции. Документы вводят информацию в базу данных, отчеты выводят результаты.

Состав отчета

У любого отчета в системе 1С есть экранная форма -- Диалог, который пользователь видит на экране. В диалоге пользователь обычно задает параметры формирования отчета, например, период времени. Также у отчета обычно есть одна или несколько бумажных форм -- Таблиц. С помощью таблиц отчет печатается на бумаге. Алгоритм формирования отчета записывается в модуле отчета на встроенном языке 1С. Например, для кадрового отчета "Сотрудники, принятые за период" нужна экранная форма с двумя полями Начало и Окончание. Оба поля будут иметь тип "дата". Модуль отчета должен выбрать из справочника Сотрудники нужных людей и вывести их в таблицу.

Секции

Фирма 1С предоставила мощный инструмент формирования отчетов -- Секции. Секция -- это область таблицы, предназначенная для многократного вывода. Например, в отчете по сотрудникам будет секция "Сотрудник", которую нужно будет выводить для каждого сотрудника. Секции могут быть горизонтальными или вертикальными. Можно также выводить пересечения горизонтальных и вертикальных секций.

Поведение сформированного отчета

В системе 1С:Предприятие отчеты могут быть вполне активными объектами. Это означает, что щелкнув например, на сотруднике можно открыть форму этого сотрудника или сформировать более детальный отчет только по этому сотруднику. Это очень удобно для бухгалтеров, которые от сводных отчетов могут перейти к более детальным и узнать, откуда взялась каждая сумма, вплоть до конкретной проводки. Для этого предназначены свойства ячейки Расшифровка и процедура ОбработкаЯчейкиТаблицы.

Хотя в самом начале этой главы было сказано, что отчеты выводят результаты, на самом деле с помощью таблиц можно организовать ввод информации в базу данных. Это бывает удобно, когда нужна сложная форма для ввода данных.

Основы программирования

Ссылка на объект Таблица
Для работы с таблицей требуется сначала создать ссылку на объект Таблица. Если таблица не одна, то следует указать нужную таблицу.

Таб = СоздатьОбъект("Таблица");

или

Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("НужныйОтчет");

<вывод секций таблицы>

Таб.Показать(); //показать таблицу на экране

Вывод секций
Секция -- это часть таблицы. Секции можно выводить несколько раз, например, в цикле. Вывести секцию -- означает прицепить ее к таблице снизу. После вывода всех секций, таблицу нужно показать на экране.

Таб.ВывестиСекцию("Шапка");
Пока ...
........Таб.ВывестиСекцию("Сотр");
КонецЦикла;
Таб.ВывестиСекцию("Подвал");

Присоединить секцию
Присоединить секцию -- означает прицепить ее к таблице справа.

Таб.ВывестиСекцию("НомерПП");
Для Месяц = 1 По 12
              Цикл
.......Таб.ПрисоединитьСекцию("Месяц");
КонецЦикла;
Таб.Показать()

Пересечение секций
Можно выводить область пересечения горизонтальной и вертикальной секций.

Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.......Таб.ВывестиСекцию("Сотр|ФИО");
.......Для Месяц = 1 По 12 Цикл
..............Таб.ПрисоединитьСекцию("Сотр|Месяц");
.......КонецЦикла;
КонецЦикла;
Таб.Показать();


Справочники | Учебник по 1С | mista.ru

Справочники

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Справочники

Назначение справочников
Основы программирования
Экранные формы
Создание и запись элемента
 Перебор элементов
Поиск элемента
Удаление элементов
Иерархические справочники
Подчиненные справочники
Периодические реквизиты
Подбор из справочника
Другие полезные методы
Чтение структуры справочников

 Психушка. Один придурок другому:
-Тебе понравился мой рассказ, который я тебе вчера дал почитать?
-Да, но как-то всё размыто и много действующих лиц.
Входит врач:
-Так, придурки, кто спёр мою телефонную книгу?...

Назначение справочников
Справочник является списком возможных значений того или иного реквизита. Справочники используются в тех случаях, когда необходимо исключить неоднозначный ввод информации. Например, для того, чтобы покупатель, продавец, кладовщик, директор понимали, о каком товаре идет речь, каждый должен называть его одинаково. И в этом случае необходим справочник. Обычно в торговом предприятии он имеет вид прайс-листа, а если такой справочник хранится в компьютере, то в него заносят всю возможную номенклатуру товаров, с которыми работает торговая фирма.

Система 1С:Предприятие позволяет вести практически неограниченное количество необходимых справочников. Каждый справочник представляет собой список однородных объектов: сотрудников, организаций, товаров и т. д. Каждый такой объект называется элементом справочника.

С точки зрения пользователя, следует иметь в виду, что в Конфигураторе создается не сам справочник, как список значений, а разрабатывается заготовка справочника, его шаблон. В процессе конфигурирования описывается структура информации, которая будет храниться в справочнике, разрабатывается экранное и, если необходимо, печатное представление справочника, задаются различные особенности его «поведения».

Атрибуты справочников

В качестве обязательных реквизитов каждый справочник имеет Код и Наименование. Код элемента справочника может быть как числовым, так и текстовым. Система 1С:Предприятие предоставляет широкие возможности по работе с кодами элементов справочника: автоматическое присвоение кодов, автоматический контроль уникальности кода и другие.

Помимо кода и наименования, в справочниках системы 1С:Предприятие может храниться любая дополнительная информация об элементе справочника. Для хранения такой информации в справочнике может быть создан список реквизитов. Используя механизм реквизитов справочника, легко организовать, например, картотеку сотрудников. Например, справочник Сотрудники почти наверняка будет иметь атрибуты Должность, Оклад и другие. Фирма 1С предвосхитила программистов и ввела во все справочники два уже заданных атрибута: Код и Наименование. Действительно, практически любой объект из реальной жизни содержит эти атрибуты. Например, для сотрудников кодом выступает табельный номер, а наименованием -- фамилия, имя, отчество (ФИО).

Типы данных

Для каждого атрибута справочника нужно указать его тип данных, например, "число", "строка", "дата" (в версии 8.0 есть еще тип Булево - Истина или Ложь). Это базовые типы, но можно указать и сложные типы данных. Например атрибут Должность имеет тип данных Должности. В этом случае, значения этого атрибута будут выбираться из справочника Должности. Так реализуется простейшая связь между справочниками, когда значения атрибутов одного справочника выбираются из другого справочника.

Справочник Сотрудники
Справочник Должности

Код | Наименование | Должность | Оклад
1 | Иванов Иван Иванович | Бухгалтер | 7000
2 | Петров Петр Петрович | Кадровик | 5000

Код | Наименование
1 | Бухгалтер
2 | Кадровик

Иерархические справочники

Список элементов справочника в системе 1С:Предприятие может быть многоуровневым. В этом случае все строки справочника будут разделяться на 2 вида: «просто» элементы справочника и группы справочника. Группы позволяют переходить на нижележащие уровни многоуровневого справочника. Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.

Справочник Сотрудники

Справочник Контрагенты

  • Работающие
    • Иванов Иванов Иванов
    • Петров Петр Петрович
  • Уволенные
    • Светлов Михаил Петрович
    • Цветков Антон Васильевич
  • Партнеры
    • Партнер 1
    • Партнер 2
  • Поставщики
    • Поставщик 1
    • Поставщик 2

Подчиненные справочники

Между справочниками может быть установлено отношение подчиненности. В терминах реляционных баз данных, между таблицами устанавливается связь "один-ко-многим". В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.Иногда можно сказать, что элементы одного справочника принадлежат элементам другого. Например, в системе может быть справочник НалоговыеЛьготы. Тогда его можно сделать подчиненным справочнику Сотрудники. Это означает, что "Сотрудник владеет налоговыми льготами".

Справочник Сотрудники

Справочник НалоговыеЛьготы
  • Иванов Иванов Иванов
  • Петров Петр Петрович
  • Светлов Михаил Петрович
  • Цветков Антон Васильевич
(владелец Петров Петр Петрович)
  • Льгота ветеранам
  • Льгота на детей
  • Иванов Иванов Иванов
  • Петров Петр Петрович
  • Светлов Михаил Петрович
  • Цветков Антон Васильевич
(владелец Светлов Михаил Петрович)
  • Льгота афганцам

Табличные части (только версия 8.0)

В версии 8.0 появилась возможность для элемента справочника иметь несколько табличных частей. Эту возможность рекомендуется использовать для отражения информации, связанной с данным элементом, но не имеющей собственной объектной сущности (для которых рекомендуется завести подчиненный справочник). Например, для спр. Товары может быть заведена табличная часть ЕдиницыИзмерения, для справочника Сотрудники могут быть заведены табличные части Образование и СоставСемьи. Работа с табличными частями похожа на работу с подчиненными справочниками за исключением того, что табличные части не могут быть типами, а значит уже будет нельзя создать реквизит типа Образование.

Сравнение справочников с другими объектами

Объект | Сходства | Различия
Константы | хранит значение, сохраняется в базе данных | Справочник хранит не одно значение, а целый список однородных объектов.
Документы | сохраняется в базе данных, имеет реквизиты, документы могут быть подчиненными друг другу | Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, документ обязательно имеет дату и время, документ может содержать табличную часть, чего нет в справочниках (в версии 8.0 справочники и документы могут иметь по несколько табличных частей). Справочники могут быть многоуровневыми, в справочнике могут быть периодические реквизиты, чего нет в документах (в версии 8.0 периодических реквизитов нет, а есть периодические регистры сведений).
Перечисления | хранится в БД, хранит список значений | Множество значений в справочник вводит пользователь в режиме Предприятие, а для перечислений список значений задается разработчиком в режиме Конфигуратор. Перечисления обычно используются в операторах Если.
ТаблицаЗначений | имеет строки и колонки (не хранится в БД) | ТаблицаЗначений предназначена для хранения промежуточных данных в памяти компьютера, возникающих во время работы программы. Таблица значений может хранить разнородные объекты, а в справочнике все элементы одного типа. Таблицы значений не могут быть многоуровневыми или подчиненными друг другу.
СписокЗначений | хранит список значений (не сохраняется в БД) | Список значений может хранить разнородные объекты, а в справочнике все элементы одного типа

Основы программирования

Ссылка на справочник
Для работы со справочником из какого-нибудь модуля требуется сначала создать ссылку на этот справочник.

7.7
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрДолж = СоздатьОбъект("Справочник.Должности");
8.0
СпрСотр = Справочники.Сотрудники;
СпрДолж = Справочники["Должности"]

Создание и запись нового элемента

7.7
СпрСотр.Новый();
СпрСотр.Наименование = "Иванов Иван Иванович";
СпрСотр.Оклад = 5000;
СпрСотр.Записать();
8.0

НовЭл = СпрСотр.СоздатьЭлемент();
НовЭл.Наименование = "Иванов Иван Иванович";
НовЭл.Оклад = 5000;
НовЭл.Записать();

Поиск элемента справочника

7.7

//например, в приказе об увольнении
СпрСотр.НайтиЭлемент(Сотрудник);

СпрСотр.НайтиПоКоду(123);
СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");
СпрСотр.НайтиПоРеквизиту("Оклад", 5000);

//если элемент найден, он становится текущим и его можно прочитать так:

Если СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович")=1 Тогда
........НайденныйСотр = СпрСотр.ТекущийЭлемент();
КонецЕсли;

8.0

//в версии 8.0 если элемент найден, то он возвращается, иначе возвращается Неопределено

НайденныйСотр = СпрСотр.НайтиПоКоду(123);
НайденныйСотр = СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");
НайденныйСотр СпрСотр.НайтиПоРеквизиту("Оклад", 5000);

//далее нужно проверить найденное значение

НайденныйСотр = СпрСотр.НайтиПоНаименованию("Иванов Иван Иванович");
Если НайденныйСотр = Неопределено Тогда
.....//элемент не найден
КонецЕсли;

Удаление элемента справочника

7.7

СпрСотр.Удалить(1); //непосредственное удаление

СпрСотр.Удалить(0); //пометка на удаление
СпрСотр.СнятьПометкуУдаления();

//можно проверить, помечен ли элемент на удаление
//функция возвращает 1 - если помечен, 0 - если нет
Пометка = СпрСотр.ПометкаУдаления(); //обратите внимание: это метод
8.0

СпрСотр.Удалить(); //непосредственное удаление

СпрСотр.УстановитьПометкуУдаления (Истина); //пометка на удаление
СпрСотр.УстановитьПометкуУдаления (Ложь); //снять пометку на удаление

//можно проверить, помечен ли элемент на удаление
//есть свойство ПометкаУдаления, оно имеет тип Булево - Истина или Ложь
Пометка = СпрСотр.ПометкаУдаления; //обратите внимание: это свойство
Если Пометка = Истина Тогда
.....//элемент помечен на удаление
КонецЕсли;

Перебор элементов справочника

7.7

СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент() = 1 Цикл
... //действия с очередным элементом
...Сообщить("Сотрудник " + СпрСотр.Наименование);
КонецЦикла;
8.0

выборка = Справочники.Сотрудники.Выбрать();
Пока выборка.Следующий() = 1 Цикл
... //действия с очередным элементом
...Сообщить("Сотрудник " + выборка.Наименование);
КонецЦикла;

Родитель
Перебор элементов внутри группы. Группа в терминах 1С -- это "родитель".

7.7

СпрСотр.НайтиПоНаименованию("Работающие");
Работающие = СпрСотр.ТекущийЭлемент();
СпрСотр.ИспользоватьРодителя(Работающие);
//дальше, например, цикл по сотрудникам (см. выше)
...
8.0

СпрСотр = Справочники.Сотрудники;
ГруппаРаботающие = СпрСотр.НайтиПоНаименованию("Работающие");
выборка = СпрСотр.Выбрать(ГруппаРаботающие);
Пока выборка.Следующий() = 1 Цикл
... //действия с очередным элементом
...Сообщить("Сотрудник " + выборка.Наименование);
КонецЦикла;

Владелец
Перебор элементов справочника принадлежащих элементу другого справочника.
Один справочник подчинен другому справочнику, например спр. НалоговыеЛьготы подчинен спр. Сотрудники.

7.7

СпрНЛ = СоздатьОбъект("Справочник.НалоговыеЛьготы");
СпрНЛ.ИспользоватьВладельца(Сотрудник);
//дальше, например, цикл по льготам этого сотрудника (см. выше)
...
8.0

выборка = Справочники.НалоговыеЛьготы.Выбрать( ,Сотрудник);
Пока выборка.Следующий() = 1 Цикл
... //действия с очередным элементом
...Сообщить("льгота " + выборка.Наименование);
КонецЦикла;

Периодические реквизиты
Чтение и запись периодических реквизитов.
Установка даты выборки периодических реквизитов для всего справочника.

7.7

//так мы узнаем, какая была у сотрудника
//категория на определенную дату
Катег = СпрСотр.Категория.Получить(НекаяДата);

//так мы установим сотруднику категорию
//на определенную дату
СпрСотр.Категория.Установить(НекаяДата, НоваяКатегория);

//можно установить дату выборки периодических
//реквизитов для всего справочника
СпрСотр.ИспользоватьДату(НекаяДата);

//тогда ниже уже нельзя использовать Установить и Получить
//доступ к периодическим реквизитам становится
//такой же, как к обычным реквизитам
Катег = СпрСотр.Категория;
СпрСотр.Оклад = 6000;

8.0

В версии 8.0 нет периодических реквизитов. Вместо них необхидом использовать регистры сведений, развернутые во времени.

Экранные формы справочников

Форма списка справочника

Для удобства работы пользователей со справочником на этапе конфигурирования можно создать несколько видов экранных форм для показа справочника. В зависимости от контекста вызова справочника можно задать использование определенного диалога для работы с ним.

Лучше один раз увидеть, чем сто раз услышать, поэтому ниже для примера приведена форма списка справочника Сотрудники:

7.7

8.0

Модуль формы списка содержит процедуры и функции, которые действуют в контексте данной формы (в контексте объекта Справочник).

Предопределенные процедуры вызываются системой 1С при наступлении определенных событий. Предопределенные процедуры вызываются системой 1С при наступлении определенных событий, поэтому они являются обработчиками событий. В версии 8.0 имя процедуры может быть любое, необязательно совпадающее с именем события. Кроме того, в версии 8.0 список событий для всех объектов был значительно расширен.

Событие
Описание
ПриОткрытии | Вызывается при открытии формы списка справочника. Можно задать начальные значения для переменных, проверить права пользователя на открытие данного справочника и т.д.
ПриЗакрытии | Вызывается при закрытии формы списка справочника.
ПриЗаписи

Вызывается при записи элемента справочника, если элементы вводятся прямо в форме списка, а не в форме элемента. Это используется для справочников с простой структурой, например справочник Должности. В этой процедуре можно проверить вводимые данные на наличие ошибок.

Пример, справочник Должности

7.7 | Процедура ПриЗаписи() .....Если СокрЛП(Наименование)="" Тогда ..........Предупреждение("Не указано название должности!",30); ..........СтатусВозврата(0); .....КонецЕсли; КонецПроцедуры
8.0 | Процедура ПриЗаписи(Отказ) .....Если СокрЛП(Наименование)="" Тогда ..........Предупреждение("Не указано название должности!",30); ..........Отказ = Истина; .....КонецЕсли; КонецПроцедуры
ПриВыбореРодителя(НовРодитель) | Вызывается при выборе родителя (группы). В этой процедуре можно проверить права пользователя на просмотр элементов данной группы.
ПриВыбореВладельца(НовВладелец) | Вызывается при выборе владельца справочника-хозяина. Имеет смысл, если данный справочник подчинен другому.
ПриУстановкеОтбора(Реквизит,Значение) | Предопределенная процедура при интерактивной установке отбора любым способом (отбор, быстрый отбор, отбор по значению, история отбора) и при отключении отбора.
ПриВыбореСтроки() | Режим обработки выбора строки (двойной щелчок мыши или клавиша Enter) включается в форме списка справочника, журнала документов, счетов, журнала операций, журнала проводок при помощи метода Форма.ОбработкаВыбораСтроки(1). Тогда при выборе строки будет вызываться эта предопределенная процедура.

Сортировка

В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)

7.7 | Процедура ПриОткрытии() ...... Сортировка("Код",0); //сортировка по коду, пользователь изменить не может КонецПроцедуры
8.0 | Процедура ПриОткрытии() ......СправочникСписок.Порядок.Установить("Наименование Asc, Карточка Asc"); ......//вопрос читателям: как запретить пользователю изменять порядок сортировки? КонецПроцедуры

Отбор

В форме списка справочника элементы могут быть отфильтрованы, т.е. пользователю будут показаны только нужные элементы. Программно установить отбор можно методом УстановитьОтбор (Реквизит, Значение). Для этого у реквизита должен быть установлен флажок "Отбор по реквизиту" в Конфигураторе .

7.7 | Процедура ПриОткрытии() ...... УстановитьОтбор("Год",1980); КонецПроцедуры
8.0 | Процедура ПриОткрытии() .......СправочникСписок.Отбор.Карточка.Установить(Год,1980); .......//вопрос читателям: как запретить пользователю изменять условия отбора? КонецПроцедуры

Статический фильтр (только версия 7.7)

В 1С 7.7 нельзя установить отбор по периодическому реквизиту или по нескольким реквизитам одновременно (сложный фильтр). В этом случае выходом из положения может быть метод ИспользоватьСписокЭлементов. Этому методу нужно передать список элементов, которые должны быть показаны. Предварительно этот список нужно сформировать.

7.7

Процедура ПоказатьРаботающихПлотников()

СписокЭлементов
                      = создатьОбъект("СписокЗначений");
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....Если (СпрСотр.Родитель = группаРаботающие) И (СпрСотр.Должность=длжПлотник)
                      Тогда
...........СписокЭлементов.ДобавитьЗначение(СпрСотр.ТекущийЭлемент());
.....КонецЕсли;
КонецЦикла;

ИспользоватьСписокЭлементов(СписокЭлементов);

КонецПроцедуры
8.0

Форма элемента и форма группы

Если справочник имеет сложную структуру, тогда его элементы удобнее редактировать в отдельном окне, а не в списке. Ниже приведена форма элемента справочника Сотрудники.

В форме элемента справочника также есть предопределенные процедуры (события):

События
Описание
ПриОткрытии() | Вызывается при открытии формы элемента справочника. Можно задать начальные значения для переменных, проверить права пользователя на открытие данного элемента справочника и т.д.
ПриЗакрытии() | Вызывается при закрытии формы элемента справочника.
ПриЗаписи()

Вызывается при записи элемента справочника. В этой процедуре можно проверить вводимые данные на наличие ошибок.

Пример, справочник Сотрудники

Процедура ПриЗаписи
....Если Категория.Выбран()=0 Тогда
.........Предупреждение("Не указана категория сотрудника!");
.........СтатусВозврата(0);
.....КонецЕсли;
КонецПроцедуры

ВводНового() | Вызывается при интерактивном вводе нового элемента справочника. В этой процедуре можно проверить права пользователя на создание новых элементов справочника, а также задать начальные значения реквизитов.

Следует заметить, что вверсии 8.0 список событий всех объектов значительно расширен.

Создание и запись элемента

Программное создание элемента справочника

Ниже в справочник Сотрудники программно добавляется новый сотрудник в группу Работающие. В справочнике заполняется поля Наименование, ДатаПриема и пара периодических реквизитов.

7.7

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.Новый();
СпрСотр.Наименование = "Иванов Иван Иванович";
СпрСотр.ДатаПриема = '01.01.2002';
СпрСотр.Записать();
//установка периодических реквизитов возможна только после записи элемента
СпрСотр.Категория.Установить (СпрСотр.ДатаПриема, ктгСовместители);
СпрСотр.Должность.Установить (СпрСотр.ДатаПриема, длжПлотник);

а можно сделать красивее:

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(ДатаПриема); //внимание!
СпрСотр.Новый();
СпрСотр.Наименование = "Иванов Иван Иванович";
СпрСотр.ДатаПриема = '01.01.2002';
//доступ к периодическим реквизитам становится такой же, как к обычным
СпрСотр.Категория = ктгСовместители;
СпрСотр.Должность = длжПлотник;
СпрСотр.Записать();

8.0

Нов = Справочники.Сотрудники.СоздатьЭлемент();
Нов.Родитель = грпРаботающие;
Нов.Наименование = "Иванов Иван Иванович";
Нов.ДатаПриема = '01.01.2002';
Нов.Записать();

//в версии 8.0 нет периодических реквизитов

Программное создание групп

7.7

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Работающие";
СпрСотр.Записать();

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Уволенные";
СпрСотр.Записать();

8.0

Нов = Справочники.Сотрудники.СоздатьГруппу();
Нов.Наименование = "Работающие";
Нов.Записать();

Нов = Справочники["Сотрудники"].СоздатьГруппу();
Нов.Наименование = "Работающие";
Нов.Записать();

Внимание! В Конфигураторе можно задать для реквизита то, что он действителен только для элемента, только для группы или для обоих. Например, поле ДатаПриема не имеет смысла для группы Работающие. Поэтому не стоит обращаться к реквизитам элементов, если вы работаете с группой и наоборот.

Транзакции

При создании множества элементов справочника для ускорения работы можно заключить цикл в транзакцию. При этом реальное создание всех элементов произойдет только по команде ЗафиксироватьТранзакцию(). На время выполнения транзакции справочник блокируется.

7.7

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
НачатьТранзакцию();

Для Ном = 1 По 100 Цикл
.....СпрСотр.Новый();
.....СпрСотр.Наименование = "Новый " + Строка(Ном);
.....СпрСотр.Записать();
КонецЦикла;

ЗафиксироватьТранзакцию();

8.0

СпрСотр = Справочники.Сотрудники;
НачатьТранзакцию();

Для Ном = 1 По 100 Цикл
.....Нов = СпрСотр.СоздатьЭлемент();
.....Нов.Наименование = "Новый " + Строка(Ном);
.....Нов.Записать();
КонецЦикла;

ЗафиксироватьТранзакцию();

Перебор элементов

Простой перебор

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Режим = 0; //выбирать без учета иерархии, 1 - с учетом (по умолч.)
СпрСотр.ВыбратьЭлементы(Режим);
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....<действия с очередным элементом/группой>
КонецЦикла;

Фильтрация (отбор)

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
РежимИерархии = 1; //1- выбирать с учетом иерархии, 0 - без учета
РежимГрупп = 0; //0 - не включать в выборку группы, 1 - включать
ИмяРеквизита = "Год"; //в Конфигураторе у реквизита должен
              быть установлен флажок Отбор
Значение = 1980;
СпрСотр.ВыбратьЭлементыПоРеквизиту(ИмяРеквизита,Значение,РежимИерархии,
              РежимГрупп);
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....<действия с очередным элементом>
КонецЦикла;

Фильтрация в цикле

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл

Если СпрСотр.Должность <> длжПлотник Тогда
....Продолжить; //этого сотрудника пропускаем, перейти в начало цикла
КонецЕсли;

<действия с очередным элементом>

КонецЦикла;

Порядок сортировки

Перед выборкой можно задать порядок сортировки следующими методами:

ПорядокКодов()
ПорядокНаименований()
ПорядокРеквизита(ИмяРекв) //у реквизита должен быть установлен флажок Сортировка в Конфигураторе
ОбратныйПорядок()

Например, ниже открывается выборка сотрудников, отсортированных по номерам по убыванию:

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ПорядокКодов();
СпрСотр.ОбратныйПорядок();
СпрСотр.ВыбратьЭлементы();

Запрос к справочнику

Перебор элементов справочника можно организовать через Запрос. Часто это бывает удобнее, если применяется сложное условие отбора или группировка элементов. Подробнее см. Запросы

Поиск элемента

Поиск элемента

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Если СпрСотр.НайтиЭлемент(ВыбрСотр)=1 Тогда
....//элемент становится текущим
....СпрСотр.Родитель = грпРаботающие;
....СпрСотр.Записать();
КонецЕсли;

Поиск по коду

Если СпрСотр.НайтиПоКоду(1) = 1 Тогда
....ЭлементИлиГруппа = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск по наименованию

Если СпрСотр.НайтиПоНаименованию("Работающие")=1 Тогда
....грпРаботающие = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Режим = 1; // 1 - поиск внутри установленного подчинения (родителя) (по умолч.); 0 - поиск во всем справочнике
ФлагПоиска = 0; //1 - найти точное соответствие; 0 - найти наименование по первым символам (по умолч)
СпрСотр.ИспользоватьРодителя(грпРаботающие);
Если СпрСотр.НайтиПоНаименованию("Ив",Режим,ФлагПоиска)=1 Тогда
....ПервыйРаботающийИв = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск по реквизиту

ИмяРекв = "Год";
              //у реквизита должен быть установлен флажок Сортировка в Конфигураторе
ФлагГлобПоиска = 1; // 1- искать во всем справочнике, 0 - искать
              в пределах подчинения
Если СпрСотр.НайтиПоРеквизиту(ИмяРекв,1980,ФлагГлобПоиска)=1
              Тогда
.....НайденныйЭлемент = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск элемента в цикле

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл

Если СпрСотр.Должность = длжПлотник Тогда
....Прервать; //нашли работающего плотника! выйти из цикла
КонецЕсли;

КонецЦикла;
<действия с найденным элементом>

Запрос к справочнику

Поиск элемента справочника можно организовать через Запрос. Часто это бывает удобнее, если применяется сложное условие отбора. Подробнее см. Запросы

Удаление элементов

Непосредственное удаление

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НайтиЭлемент(ВыбрСотрудник);
СпрСотр.Удалить(); //непосредственное удаление

Внимание! Если вы производите непосредственное удаление элемента, то следите, чтобы на него не было ссылок в других объектах. Например, удаляемый сотрудник может использоваться в документе Отпуск. При его удалении ссылочная целостность базы данных будет нарушена. В этом случае рекомендуется пользоваться пометкой на удаление.

Можно программно получить список объектов, содержащих ссылку на удаляемый объект методом НайтиСсылки(объект).

Пометка на удаление

Для контроля ссылочной целостности базы данных удаляемые элементы всего лишь помечаются на удаление. Затем специальной командой меню Операции => "Удаление помеченных объектов" в монопольном режиме система 1С проконтролирует ссылочную целостность и физически удалит элементы из базы данных, если на них нет ссылок в других объектах.

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НайтиЭлемент(ВыбрСотрудник);
СпрСотр.Удалить(0); //пометка на удаление

//можно проверить, помечен ли элемент на удаление
//функция возвращает 1 - если помечен, 0 - если нет
Пометка = СпрСотр.ПометкаУдаления();

//можно снять пометку на удаление
СпрСотр.НайтиЭлемент(ВыбрСотрудник);
СпрСотр.СнятьПометкуУдаления();

Транзакции

При удалении множества элементов справочника для ускорения работы можно заключить цикл в транзакцию. При этом реальное удаление (пометка на удаление) всех элементов произойдет только по команде ЗафиксироватьТранзакцию(). На время транзакции справочник блокируется.

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
НачатьТранзакцию();

СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
......СпрСотр.Удалить(0); //пометка на удаление
КонецЦикла;

ЗафиксироватьТранзакцию();

Иерархические справочники

Список элементов справочника в системе 1С:Предприятие может быть многоуровневым. В этом случае все строки справочника будут разделяться на 2 вида: «просто» элементы справочника и группы справочника. Группы позволяют переходить на нижележащие уровни многоуровневого справочника. Возможное количество уровней вложенности справочника задается в Конфигураторе.

Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.

Внимание! Иерархический справочник - это также многоуровневый справочник, или справочник с группами.
Группа справочника в 1С часто называется "родитель".

Программное создание группы

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Работающие";
СпрСотр.Записать();

СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Уволенные";
СпрСотр.Записать();

Внимание! В Конфигураторе можно задать для реквизита то, что он действителен только для элемента, только для группы или для обоих. Например, поле ДатаПриема не имеет смысла для группы Работающие. Поэтому не стоит обращаться к реквизитам элементов, если вы работаете с группой и наоборот.

Установка текущей группы

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие); //теперь мы внутри группы Работающие
СпрСотр.ВыбратьЭлементы(); //открыть выборку элементов группы Работающие

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.Новый(); //создание нового элемента в группе Работающие

Информация о текущем элементе

Если справочник многоуровневый, то будет полезным применение следующих методов и атрибутов, которые позволяют получить информацию о текущем элементе справочника:

Метод / атрибут
Описание
Уровень()

Этот метод возвращает уровень текущего элемента. Например, для сотрудника, который находится в группе Работающие, мы получим число 2.

Пример, вывод иерархического справочника в виде дерева:

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлементы()=1 Цикл

//вывести
                      отступ в соответствии с глубиной вложенности элемента
Для Ном=1 По СпрСотр.Уровень() Цикл
.....Сообщить(".....");
КонецЦикла;
Сообщить(СпрСотр.Наименование);

КонецЦикла;

ЭтоГруппа() Этот метод возвращает 1, если текущий элемент справочника является группой, или 0 если группой не является.

Пример, вывод сотрудников (группы не выводятся):

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлементы()=1 Цикл

Если СпрСотр.ЭтоГруппа()=1 Тогда
......Продолжить; //группы пропускаем, перейти в начало цикла
КонецЕсли;
Сообщить(СпрСотр.Наименование);

КонецЦикла;

ПринадлежитГруппе(...) Метод проверяет, принадлежит ли указанной группе текущий элемент справочника (независимо от того, на каком нижележащем уровне он находится).
Возвращает: 1 - если элемент принадлежит указанной группе , 0 - если нет.

Пример, вывод товаров, принадлежащих к группе Спиртное, независимо от того входят ли они в подгруппы Шампанское, Пиво, Водка, Вино и т.д.:

СпрТовары = СоздатьОбъект("Справочник.Товары");
СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлементы()=1 Цикл

Если СпрТовары.ПринадлежитГруппе(грпСпиртное)=1 Тогда
.....Сообщить(СпрТовары.Наименование);
КонецЕсли;

КонецЦикла;

атрибут Родитель

Этот атрибут содержит родителя текущего элемента справочника, т.е. группу, в которой находится текущий элемент. Доступен для чтения и записи.

Пример, перенос всех товаров из группы Спиртное в группу Распродажа:

СпрТовары = СоздатьОбъект("Справочник.Товары");
СпрТовары.ВыбратьЭлементы();
Пока СпрТовары.ПолучитьЭлементы()=1 Цикл

Если
                      СпрТовары.ПринадлежитГруппе(грпСпиртное)=1 Тогда
.....СпрСотр.Родитель = грпРаспродажа;
.....СпрСотр.Записать();
КонецЕсли;

КонецЦикла;

А можно сделать красивее и перенести всю группу Спиртное в группу Распродажа, тогда все подгруппы и элементы также перенесутся в группу Распродажа.

СпрТовары
                    = СоздатьОбъект("Справочник.Товары");
СпрТовары.НайтиЭлемент(грпСпиртное);
СпрТовары.Родитель = грпРаспродажа;
СпрТовары.Записать();
ПолныйКод()

Возвращает строку, содержащую полный код выбранного элемента справочника со всеми вышестоящими уровнями, разделенными символом "/".

Например, "2/7/123"
ПолноеНаименование()

Возвращает строку, содержащую полное наименование выбранного элемента справочника со всеми вышестоящими уровнями, разделенными символом "/".

Например, "Спиртное/Шампанское/Советское"

Возможность выбора группы в реквизите диалога

Часто бывает удобно для реквизитов на форме, имеющих тип Справочник, отключить возможность выбора группы. Тогда в данное поле может быть выбран только элемент и не может быть выбрана группа. В общем, проще один раз попробовать, чем несколько раз объяснять.

Форма.ВыбрСотрудник.ВыборГруппы(0); //отключить возможность выбора группы

Подчиненные справочники

Справочник-владелец, это также справочник-хозяин.
Справочник-владелец и подчиненный справочник также называются связанными справочниками.
В терминах реляционных баз данных справочник-владелец - это родительская таблица, подчиненный справочник - это дочерняя таблица.

Назначение подчиненных справочников

Любой справочник может использоваться как сам по себе, так и быть подчиненным какому-либо другому справочнику. Например, справочник договоров может использоваться отдельно, а может быть связан со справочником организаций.

Чтобы подчинить справочник какому-либо из справочников, уже существующих в системе, в поле «Подчинен» следует выбрать наименование этого справочника. Такой справочник в системе 1С:Предприятие называется владельцем.

В отличие от многоуровневого справочника, в котором все элементы имеют одинаковую структуру, использование механизма подчиненных справочников позволяет связать элементы разной структуры. В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.

Внешне работа с подчиненным справочником в системе 1С:Предприятие будет выглядеть следующим образом.

Если для подчиненного справочника установлен режим показа в виде иерархического списка, то перед использованием справочника сначала должен быть выбран элемент справочника-владельца. При показе на экране подчиненный справочник будет содержать в своем заголовке наименование элемента-владельца, а список элементов подчиненного справочника будет содержать только элементы, относящие к элементу-владельцу. При смене элемента-владельца информация в окне подчиненного справочника будет соответствующим образом обновлена.

Если открыть подчиненный справочник, не выбрав элемент-владелец, то в окне подчиненного справочника не будет отображаться ни одного элемента, а в заголовке окна будет выдано сообщение «Не задан элемент-владелец».

При работе с системой 1С:Преднриятие для подчиненного справочника может быть отключен показ в виде иерархического списка. В этом случае в окне подчиненного справочника будут отображаться все элементы этого справочника, то есть элементы, починенные разным владельцам, будут показываться вперемешку. Тем не менее, любой элемент подчиненного справочника «знает» своего владельца: если для справочника включен режим «Редактировать в диалоге» (см. ниже п. «Создание форм справочника»), наименование элемента-владельца будет выдаваться в заголовке окна редактирования элемента справочника.

Установка текущего владельца

СпрДоговоры = СоздатьОбъект("Справочник.Договоры");
СпрДоговоры.ИспользоватьВладельца(ВыбрКонтрагент);
СпрДоговоры.ВыбратьЭлементы(); //открываем выборку по договорам выбранного контрагента
<...>

Информация о текущем элементе

Если справочник подчиненный, то будет полезным применение следующих методов и атрибутов, которые позволяют получить информацию о текущем элементе справочника:

Атрибут
Описание
атрибут Владелец

Этот атрибут содержит владельца текущего элемента подчиненного справочника, т.е. элемент справочника-хозяина, к которому относится данный элемент. Атрибут доступен для чтения и записи.

Пример, перенос всех договоров от одного котрагента к другому (справочник Договоры подчинен справочнику Контрагенты):

СпрДоговоры
                    = СоздатьОбъект("Справочник.Договоры");
СпрДоговоры.ИспользоватьВладельца(Контрагент1);
СпрДоговоры.ВыбратьЭлементы();
Пока СпрДоговоры.ПолучитьЭлементы()=1 Цикл

СпрДоговоры.Владелец = Контрагент2;
СпрДоговоры.Записать();

КонецЦикла;

Периодические реквизиты

Включение опции «Периодический» позволяет указать для реквизита справочника хранение истории изменений его значения. Такой реквизит в системе 1С:Предприятие называется периодическим и обладает следующим свойством: в отличие от «обычных» (не периодических) реквизитов, система 1С:Предприятие хранит значения такого реквизита по датам их изменения. При обращении к значению такого реквизита на некоторую дату выдается его значение на эту дату, либо, если таковое отсутствует, — на ближайшую предыдущую дату, на которую устанавливалось значение реквизита.

Подобное свойство реквизита справочника позволяет, например, легко организовать хранение истории изменения курсов в справочнике валют.

К периодическому реквизиту можно обращаться при помощи встроенного языка системы 1С:Предприятие — получать и записывать значение реквизита на указываемую дату. Однако, следует иметь в виду, что при получении значения реквизита на какую-то дату извлекается его значение на указанную или (если значение на указанную дату отсутствует) на ближайшую предыдущую дату, а запись значения периодического реквизита выполняется всегда на указанную дату.

В режиме использования конфигурации для периодического реквизита можно вызвать окно «История». Это окно представляет собой таблицу, состоящую из двух граф: дата изменения значения реквизита справочника и значение на эту дату. Окно «История» позволяет редактировать историю изменений значения реквизита напрямую: вводить новые строки, редактировать или удалять существующие.

Методы периодических реквизитов
//так мы узнаем, какая была у сотрудника категория на определенную дату
Катег = СпрСотр.Категория.Получить(НекаяДата);

//так мы установим сотруднику категорию на определенную дату
СпрСотр.Категория.Установить(НекаяДата, НоваяКатегория);

Внимание! Эти методы можно применять, если ранее не применялся метод ИспользоватьДату

Установка даты выборки периодических реквизитов

//можно установить дату выборки периодических реквизитов для всего справочника
СпрСотр.ИспользоватьДату(НекаяДата);

//тогда ниже уже нельзя использовать методы Установить и Получить
//доступ к периодическим реквизитам становится такой же, как к обычным реквизитам
Катег = СпрСотр.Категория;
СпрСотр.Оклад = 6000;

Объект "Периодический"

Для работы с историей периодического реквизита очень удобно использовать объект "Периодический".

Пример, вывести историю карьеры сотрудника за текущий год:

ИсторияКарьеры
              = СоздатьОбъект("Периодический");
ИсторияКарьеры.ИспользоватьОбъект("Должность",ВыбрСотрудник);
ИсторияКарьеры.ВыбратьЗначения(НачГода(РабочаяДата(),КонГода(РабочаяДата()));
Пока ИсторияКарьеры.ПолучитьЗначение()=1 Цикл
....Сообщить(Строка(ИсторияКарьеры.ДатаЗнач) + " " + Строка(ИсторияКарьеры.Значение));
КонецЦикла;

С помощью объекта Периодический можно также редактировать и удалять значения. Полный список методов см. в Синтакс-помощнике.

Проведение документов

При проведении документа часто требуется установить новое значение периодического реквизита на определенную дату. Это называется движение документа. В этом случае следует применять метод УстановитьРеквизитСправочника:

Процедура ОбработкаПроведения()

УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);

КонецПроцедуры

Если документ имеет табличную часть и вы хотите, чтобы движения документа были привязаны к номеру строки документа, тогда следует применять метод ПривязыватьСтроку.

Процедура ОбработкаПроведения()

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

ПривязыватьСтроку(НомерСтроки);
УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);

КонецЦикла;

КонецПроцедуры

Подбор из справочника

Функция подбора позволяет выбирать несколько значений из справочника или другого объекта, не закрывая его. Например, есть документ РасходнаяНакладная, в котором пользователь может указать несколько товаров.

Организация подбора

Синтаксик: ОткрытьПодбор(<Объект>,<ИмяФормы>,<КонтекстФормы>,<ФлагМножВыбора>,<ТекЗнач>)

ОткрытьПодбор("Справочник.Номенклатура","ФормаДляПодбора",Конт,1);

Процедура ОбработкаПодбора(Элемент,КонтФормы)
...НоваяСтрока();
...Товар = Элемент;
КонецПроцедуры

Можно воспользоваться контекстом формы и сразу перейти в нужную группу, например:

ОткрытьПодбор("Справочник.Номенклатура","ФормаДляПодбора",Конт,1);
Конт.ИспользоватьРодителя(грпСпиртное);

Процедура ОбработкаПодбора(Элемент,КонтФормы)
...НоваяСтрока();
...Товар = Элемент;
КонецПроцедуры

Установка и получение значений из подбора

КонтФормыПодбора.УстановитьЗначениеВПодборе(<ИмяРеквизита>,<Значение>)

<ИмяРеквизита> - строка с именем реквизита формы подбора значения;
<Значение> - значение реквизита.

КонтФормыПодбора.ПолучитьЗначениеИзПодбора(<Выражение>)

<Выражение> - строковое выражение, значение которого вычисляется в контексте формы подбора и возвращается в качестве результата.

Другие полезные методы

Метод | Описание
Вид() | Установить или считать текущее название вида справочника. Возвращает текущее название вида справочника, как оно задано в Конфигураторе, например "Сотрудники". Установка вида справочника возможна для реквизитов типа "Справочник", т.е. справочник неопределенного вида.
ПредставлениеВида() | Получить пользовательское представление вида справочника, как он задан в конфигураторе. Возвращает строковое значение, содержащее пользовательское представление вида справочника (синоним).
УстановитьАтрибут(ИмяРеквизита, Значение) | Установить значение реквизита по его имени. <ИмяРеквизита> - строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе. <Значение> - выражение, содержащее устанавливаемое значение реквизита.
ПолучитьАтрибут(ИмяРеквизита) | Получить значение реквизита по его имени. Возвращает значение реквизита.
Выбран() | Возвращает 1 - если элемент справочника выбран, 0 - если не выбран. Часто применяется для проверки на ошибки, чтобы все необходимые данные были указаны.
Выбрать(...) | Вызов диалога для выбора элемента справочника. Возвращает: 1 - если элемент выбран; 0 - если не выбран. Выбранный элемент становится текущим.

Чтение структуры справочников

Цикл по справочникам

КолвоСправочниковВКонфигурации = Метаданные.Справочник();
Для Ном=1 to КолвоСправочниковВКонфигурации Цикл

кфгСпр = Метаданные.Справочник(Ном);
Идентификатор = кфгСпр.Идентификатор();
ПолныйИдентификатор = кфгСпр.ПолныйИдентификатор();
Синоним = кфгСпр.Синоним();
Комментарий = кфгСпр.Комментарий();
КоличествоУроней = кфгСпр.КоличествоУроней();
ПодчиненЛи
                = кфгСпр.Владелец().Выбран();
Владелец = кфгСпр.Владелец();
ИдентификаторВладельца = кфгСпр.Владелец().Идентификатор;
.....<и так далее>

КонецЦикла;

т.е. если вызвать метод Метаданные.Справочник() без параметров, то он вернет общее количество справочников в конфигурации. Если передать ему в качестве параметра номер или название справочника, то он вернет справочник как объект конфигурации.

Цикл по реквизитам справочника

кфгСпрСотр = Метаданные.Справочник("Сотрудники");

КолвоРеквизитов = кфгСпрСотр.Реквизит();
Для Ном=1 to КолвоРеквизитов Цикл

кфгРекв =
                кфгСпрСотр.Реквизит(Ном);
Идентификатор = кфгРекв.Идентификатор();
ПолныйИдентификатор = кфгРекв.ПолныйИдентификатор();
Синоним = кфгРекв.Синоним();
Комментарий = кфгРекв.Комментарий();
Тип = кфгРекв.Тип(); //"Строка", "Число",
                "Справочник"
Вид = кфгРекв.Вид(); //напр. "Сотрудники"
Длина = кфгРекв.Длина();
Точность = кфгРекв.Точность();
Периодический = кфгРекв.Периодический();
.....<и так далее>

КонецЦикла;

т.е. если вызвать метод Метаданные.Справочник(Х).Реквизит() без параметров, то он вернет общее количество реквизитов справочника Х в конфигурации. Если передать ему в качестве параметра номер или название реквизита, то он вернет реквизит справочника как объект конфигурации.

Обращение к атрибутам по имени

При работе с метаданными часто применяются следующие методы:

Метод | Описание
УстановитьАтрибут(ИмяРеквизита, Значение) | Установить значение реквизита по его имени. <ИмяРеквизита> - строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе. <Значение> - выражение, содержащее устанавливаемое значение реквизита.
ПолучитьАтрибут(ИмяРеквизита) | Получить значение реквизита по его имени. Возвращает значение реквизита.

Что можно скачать

Так как работа с метаданными плохо документирована самой фирмой 1С, то рекомендуется скачать следующий файл, который является файлом для Синтакс-помощника. В нем содержится описание работы с некоторыми методами объекта Метаданные.

metadata_als.zip

Распакуйте и поместите als-файл в каталог Program Files\1cv77\BIN и он будет подключен к Синтакс-помощнику.


Встроенные функции | Учебник по 1С | mista.ru

Встроенные функции

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Встроенные функции
Один программист 1С другому:
- У тебя генератор случайных чисел есть?
- Четырнадцать.

Эти процедуры и функции часто применяются при программировании на 1С, поэтому знать их обязательно!

Процедура / Функция

Примечание

ОкончатЦена = Окр(Цена*0.5, 2);

Округление.

Рублей = Цел(Цена);

Получить целую часть числа.

ОблНал = Макс(ОблНал-Льготы,0);
МинЗнач = Мин(значение1,значение2,значение3);

Получить минимальное или максимальное из значений. Можно передавать несколько параметров (больше двух)

Длина = СтрДлина("Иванов Иван Иванович");

Получить длину строки.

ФИО = СокрЛ(ФИО); //убрать пробелы слева
ФИО = СокрП(ФИО); //убрать пробелы справа
ФИО = СокрЛП(ФИО); //убрать пробелы слева и справа

 Отсечение пробелов.

АБ
                    = Лев("АБВГДЕ",2);
ГДЕ = Прав("АБВГДЕ",3);
БВГ = Сред("АБВГДЕ",2,3);

Вырезание подстроки слева, справа и из середины.

НомерСимвола = Найти(ФИО, " "); //найти позицию первого пробела

 Поиск вхождения подстроки в строку.

НоваяСтрока = СтрЗаменить(ПрежняяСтрока," ", "_");

 Замена одной подстроки на другую.

ФИОЗаглавнымиБуквами = ВРЕГ(ФИО)
ФИОстрочнымиБуквами = нрег(ФИО)

Изменение регистра букв.
СегодняВ1С = РабочаяДата(); //дата в параметрах 1С
СегодняВСистеме = ТекущаяДата(); //дата в операционной системе
СейчасВСистеме = ТекущееВремя();
         Получить текущую дату и время.
НачалоМесяца = НачМесяца(НекаяДата);
КонецМесяца = КонМесяца(НекаяДата);
НачалоГода = НачГода(НекаяДата);
КонецГода = КонГода(НекаяДата);
Получение начала/конца месяца/года по некой дате.
Год = ДатаГод(ДатаРождения);
Месяц = ДатаМесяц(ДатаРождения);
Число = ДатаЧисло(ДатаРождения); 		Выделить из даты год, месяц и число.
ДатаЧерезДваМесяца = ДобавитьМесяц(НекаяДата,2); | Прибавление к дате нескольких месяцев. Если число отрицательное, то отсчет ведется назад.
ПериодСтрокой = ПериодСтр(Дата1, Дата2); | Строковое представление периода, например "Январь 2002".
НекаяДата = Дата("01.01.2002");
Сообщение = "Месяц " + Строка(НомерМесяца);
НекоеЧисло = Число("5"); 		Преобразование типов.
СуммаСКопейками = Формат(Сумма,"Ч10.2-"); | Форматирование чисел, сумм и дат. Очень много вариантов форматирования!
СуммаПрописью = Пропись(Сумма); | Сумма прописью. Часто применяется в денежных документах.
Если Вопрос("Вы уверены?","Да+Нет")="Да" Тогда | Вопрос пользователю. Можно спросить "Да+Нет", "Повтор+Отмена" и т.д.
Предупреждение("Случилась ошибка!"); | Сообщениию пользователю в виде окошка. Программа приостанавливается, пока пользователь не нажмет ОК.
Сообщить("Документ проведен!"); | Сообщение пользователю в окно сообщений. Программа работает дальше.
Состояние("Выполнено на " + Строка(Проценты) + "%"); | Сообщение пользователю в строку статуса.
глТекущийПользователь = ИмяПользователя(); | Получить имя текущего пользователя.
Права = НазваниеНабораПрав(); | Получить название набора прав текущего пользователя.
ТекКаталогБазы = КаталогИБ(); | Получить каталог, где находится информационная база.

НачатьТранзакцию();

Если <условие ошибки> Тогда
............ОтменитьТранзакцию();
КонецЕсли;

ЗафиксироватьТранзакцию();

Обработка транзакций. Транзакция - это совокупность действий, которая выполняется или вся целиком, или не выполняется ни одно из действий. Т.е. это единый блок действий, который или выполнен целиком, или не выполнен совсем. Транзакции необходимы для сохранения целостности базы данных.
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); | Возвращает ссылку на объект.
Если ТипЗначенияСтр(Параметр)="Справочник" Тогда | Определяет тип значения.


Список значений | Учебник по 1С | mista.ru

Список значений

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Список значений
Создание списка значений
 Добавление значений
Перебор
Сортировка
Поиск значения
Удаление значений
Список значений в диалоге
Выгрузка и загрузка 		"Программирование" - как и "любовь" - одно слово, за которым скрывается бесконечное множество занятий.

Создание объекта СписокЗначений

Список значений - это аналог одномерного массива в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Объект "Список значений" имеет множество полезных возможностей и работает очень быстро. Следует учитывать, что в языке 1С есть и одномерные массивы в том смысле, как это принято в других языках программирования (Перем мас[10]). Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.

СписокЗнач = СоздатьОбъект("СписокЗначений");

Добавление значений в список

Синтаксис: ДобавитьЗначение(<значение>,[<представление>]);

//у каждого значения в СпискеЗначений есть экранное представление
//если оно не указано, то используется стандартное строковое представление объекта

СписокЗнач.ДобавитьЗначение("Иванов
              Иван Иванович");
СписокЗнач.ДобавитьЗначение(Сотрудник);
СписокЗнач.ДобавитьЗначение(1,"Значение №1");

СписокЗнач.УстановитьЗначение(3,3,"Значение №3"); //установить новое значение и представление 3-й позиции

Перебор списка значений

стр = "";
Для Номер = 1 По СписокЗнач.РазмерСписка() Цикл
...значение = СписокЗнач.ПолучитьЗначение(Номер, стр); //получить
              значение и представление
...Сообщить(значение + ", " + стр);
КонецЦикла;

Сортировка списка значений

//сортировать по значению
СписокЗнач.Сортировать(); //по возрастанию
СписокЗнач.Сортировать(1); //по убыванию

//сортировать по представлению
СписокЗнач.СортироватьПоПредставлению(); //по возрастанию
СписокЗнач.СортироватьПоПредставлению(1); //по убыванию

Поиск значения в списке

//поиск по значению
Синтаксис: НайтиЗначение(<Знач>)
Возвращает номер позиции списка, в которой найдено значение или 0, если не найдено

номстр = СписокЗнач.НайтиЗначение (Сотрудник);

//проверка вхождения значения в список
//работает очень быстро, если между проверками список не изменяется.
//если передается элемент справочника, а в списке хранятся группы справочника
//тогда проверяется вхождение элемента справочника в группу

Если СписокЗнач.Принадлежит(Сотрудник)=1 Тогда
....<действия>
КонецЕсли;

Удаление значений из списка

СписокЗнач.УдалитьВсе(); //очистить список значений

//удаляет значения из указанной позиции
СписокЗнач.УдалитьЗначение(откуда, [сколько]);

Список значений как элемент диалога
Список значений может использоваться в экранных формах как элемент диалога с пользователем.

//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = СписокЗнач.ТекущаяСтрока(НовСтрока);

//список значений в диалоге может иметь пометки (флажки)

пометка = СписокЗнач.Пометка(Позиция); //прочитать пометку у значения списка
СписокЗнач.Пометка(Позиция,1); //установить пометку у значения списка
СписокЗнач.Пометка(Позиция,0); //снять пометку у значения списка

Выгрузка и загрузка списка значений

//выгрузка в другой список значений или таблицу значений
Синтаксис: Выгрузить(<Знач>,<НачПоз>,<Колич>)
СписокЗнач.Выгрузить(НовыйСписок,1,10); //выгрузить первые 10 значений

//выгрузка списка значений в строку с разделителями
стр = СписокЗнач.ВСтрокуСРазделителями(); //возвращает строку: 10,12,"Иванов","Петров"

//загрузка списка значений из строки с разделителями
//обратите внимание на двойные кавычки для строковых значений
СписокЗнач.ИзСтрокиСРазделителями("10,12,""Иванов"",""Петров""");


Текстовые файлы | Учебник по 1С | mista.ru

Текстовые файлы

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Текстовые файлы

Для работы с текстами в системе используется специальный агрегатный тип данных — «Текст». Этот объект предназначен для формирования отчетов в текстовом виде, а также для обмена информацией с другими программами посредством текстовых файлов. Средства языка имеют возможность не только вывода строк в текстовые файлы, но и считывания имеющихся файлов с последующим разбором его по строкам.

Методы

Метод
Описание
Открыть(<ИмяФайла>) | Открыть текстовый файл с указанным именем.
КоличествоСтрок() | Возвращает число строк в тексте.
ПолучитьСтроку(<НомерСтроки>) | Возвращает строку текста с заданным номером.
ДобавитьСтроку(<Строка>) | Добавить строку в конец текста.
УдалитьСтроку(<НомерСтроки>) | Удалить строку с указанным номером.
ВставитьСтроку(<НомСтроки>,<Строка>) | Вставить строку с указанным номером.
ЗаменитьСтроку(<НомерСтроки>,<Строка>) | Заменить строку с указанным номером.
Шаблон(<Флаг>)

Включить/Отключить режим добавления строк по шаблону. Шаблон означает, что в квадратных скобках указаны имена переменных или выражения на встроенном языке. При формировании такой строки 1С вычислит все выражения в квадратных скобках и подставит их в строку.

Пример, "Сотрудник с табельным номером [Сотрудник.Код] обработан." При формировании такой строки в режиме шаблона результирующая строка будет иметь вид: "Сотрудник с табельным номером 123 обработан."
ФиксШаблон(<Флаг>) | В отличие от метода Шаблон, ограниченные квадратными скобками поля замещаются значениями выражений с сохранением своей длины в символах, то есть обрезаются, если поле короче результата вычисления выражения и дополняются пробелами если длиннее. Если результат числовой, то в границах поля строка прижимается к правой границе.
Показать(<Заголовок>,<ИмяФайла>) | Открыть окно редактирования текста.
ТолькоПросмотр(<Режим>)

Разрешить / запретить возможность редактирования текста в окне просмотра. Вызывается до метода Показать.
Очистить() | Очищает содержимое текстового документа. Его использование позволяет заново заполнить содержимое текстового документа.
КодоваяСтраница(<Режим>) Установить режим кодировки текста. 0 - windows-кодировка, 1 - DOS-кодировка.
Возвращает текущее числовое значение режима кодировки (на момент до исполнения метода).
Записать(<ИмяФайл>) | Записать текст в файл с указанным именем.

Пример

ТекстДок
              = СоздатьОбъект("Текст");
ТекстДок.Открыть("catalog.txt");
ТекстДок.ЗаменитьСтроку(52, "Установка оборудования......"
              + Стоимость);
ТекстДок.ВставитьСтроку(53, "Замена оборудования... ");
ТекстДок.УдалитьСтроку(10);
ТекстДок.ДобавитьСтроку("Конец файла");

ТекстДок2 = СоздатьОбъект("Текст");
ТекстДок2.Шаблон(1);

Для
              н = 1 По ТекстДок.КоличествоСтрок(1) Цикл
..........стр = ТекстДок.ПолучитьСтроку(н);
..........стр2 = "[н]" + стр;
.........ТекстДок2.ДобавитьСтроку(стр2);
КонецЦикла;

ТекстДок2.Записать("catalog2.txt");
ТекстДок2.ТолькоПросмотр(1);
ТекстДок2.Показать();


Таблица значений | Учебник по 1С | mista.ru

Таблица значений

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Таблица значений
Создание таблицы значений
 Добавление строк
Перебор строк
Сортировка
Поиск значения
Итоги и группировка
Удаление строк и колонок
Таблица значений в диалоге
Специальные методы
Выгрузка таблицы значений 		Работа программиста и шамана имеет очень много общего: каждый бормочет непонятные слова и не может объяснить почему это все работает.

Создание таблицы значений
Таблица значений - это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.

ТабЗнач = СоздатьОбъект("ТаблицаЗначений");

ТабЗнач.НоваяКолонка("Номер");
ТабЗнач.НоваяКолонка("Сотрудник");
ТабЗнач.НоваяКолонка("Должность");
ТабЗнач.НоваяКолонка("Оклад");

//можно указать тип данных каждой колонки
//если тип данных колонки не указан, то можно хранить данные любого типа
Синтаксис: НоваяКолонка(<Идентификатор>, <Тип>, <Длина>, <Точность>, <Заголовок>, <Ширина>, <Формат>, <Положение>)

ТабЗнач.НоваяКолонка("Номер","Число",10,0);
ТабЗнач.НоваяКолонка("Сотрудник","Справочник.Сотрудники");
ТабЗнач.НоваяКолонка("Должность","Справочник.Должности");
ТабЗнач.НоваяКолонка("Оклад","Число",10,2);

Добавление строк в таблицу значений

ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 1;
ТабЗнач.Сотрудник = "Иванов Иван Иванович"; //следите
              за типом колонки!
ТабЗнач.Должность = "Программист";
ТабЗнач.Оклад = 20000;

ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 2;
ТабЗнач.Сотрудник = "Петров Петр Петрович";
ТабЗнач.Должность = "Бухгалтер";
ТабЗнач.Оклад = 10000;

//обычно строки
              добавляются в цикле
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....ТабЗнач.НоваяСтрока();
.....ТабЗнач.Номер = СпрСотр.Код;
.....ТабЗнач.Сотрудник = СпрСотр.ТекущийЭлемент(); //следите за
              типом колонки!
.....ТабЗнач.Должность = СпрСотр.Должность;
.....ТабЗнач.Оклад = СпрСотр.Оклад;
КонецЦикла;

Перебор строк таблицы значений

1-й способ.

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
...Сообщить(ТабЗнач.Сотрудник);
КонецЦикла;

2-й способ.

Для НомерСтроки
              = 1 По ТабЗнач.КоличествоСтрок() Цикл
...ТабЗнач.ПолучитьСтрокуПоНомеру(НомерСтроки);
...Сообщить(ТабЗнач.Сотрудник);
КонецЦикла;

Сортировка таблицы значений

//сортировать по должности по возрастанию
ТабЗнач.Сортировать("Должность+");

//сортировать по должности по возрастанию, а внутри должности по убыванию оклада
ТабЗнач.Сортировать("Должность+,Оклад-");

Поиск в таблице значений

Синтаксис: НайтиЗначение(<Знач>,<Строка>,<Колонка>)
Возвращает число: 0 - значение не найдено; 1 - значение найдено
Если указан параметр <Строка>, то поиск производится только по заданной строке
Если указан параметр <Колонка>, то поиск производится только по заданной колонке

номстр = 0;
Если ТабЗнач.НайтиЗначение (10000, номстр, "Оклад")
              = 1 Тогда
...ТабЗнач.ПолучитьСтрокуПоНомеру(номстр);
...Сообщить(ТабЗнач.Сотрудник);
КонецЕсли;

Итоги и группировка таблицы значений

//получить итог по колонке можно методом Итог
ВсеОклады = ТабЗнач.Итог("Оклад")

//часто требуется группировать строки и подсчитывать итоги по группам,
//в этом случае применяется метод Свернуть

Синтаксис: Свернуть(<ГруппКолонки>,<СуммКолонки>)

//проссумировать оклады по каждой должности
ТабЗнач.Свернуть("Должность","Оклад");

//Можно группировать и суммировать сразу по нескольким колонкам
ТабЗнач.Свернуть("Категория, Должность","Оклад,Налог");

Удаление строк и колонок из таблицы значений

ТабЗнач.Очистить(); //очистить таблицу значений и удалить колонки

ТабЗнач.УдалитьСтроки(); //удаляет все строки (колонки сохраняются)

ТабЗнач.УдалитьСтроку(); //удаляет текущую строку
ТабЗнач.УдалитьСтроку(3); //удаляет 3-ю строку

ТабЗнач.УдалитьКолонку("Оклад"); //удаляет колонку Оклад
ТабЗнач.УдалитьКолонку(2); //удаляет 2-ю колонку

ВНИМАНИЕ
Часто требуется удалить строки, удовлетворяющие определенному условию.
Так как при удалении строки из таблицы значений следующая строка становится текущей,
то указанная ниже программа может удалить НЕ ВСЕ необходимые строки.

//ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ !!!
ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
...Если <условие> Тогда
......ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей,
...КонецЕсли;
КонецЦикла;

В этом случае я рекомендую использовать следующий прием:

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
~начало:
...Если <условие> Тогда
......ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей
......Если ТабЗнач.НомерСтроки<>0 Тогда
........ Перейти ~начало;
......КонецЕсли;
...КонецЕсли;
КонецЦикла;

А вот еще один правильный алгоритм, предложенный Wlad:

ТабЗнач.выбратьстроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
.......Пока (<условие>) и (ТабЗнач.НомерСтроки<>0) Цикл
..............ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей
.......КонецЦикла;
КонецЦикла;

Таблица значений как элемент диалога
Таблица значений может использоваться в экранных формах как элемент диалога с пользователем.

//установить курсор на указанную колонку или можно узнать, где находится курсор
ТабЗнач.ТекущаяКолонка(НоваяКолонка,ТекКолонка);

//установить курсор на указанную строку или можно узнать, где находится курсор.
ТекСтрока = ТабЗнач.ТекущаяСтрока(НовСтрока);

ТабЗнач.ВидимостьКолонки("Оклад",0); //скрыть колонку Оклад
ТабЗнач.ВидимостьКолонки("Должность, Сотрудник",1); //показать колонки Должность и Сотрудник
ТабЗнач.ВидимостьКолонки("Оклад",1,1); //показать колонку Оклад в 1-й позиции

//можно зафиксировать верхние строки и левые колонки для удобства прокрутки таблицы значений в диалоге
ТабЗнач.Фиксировать(КолСтрок,КолКолонок);

Методы УстановитьЗначение и ПолучитьЗначение
Эти методы позволяют обращаться к данным в таблице значений для чтения и записи.
Они могут пригодиться в особых случаях при написании универсальных программ (мастеры отчетов и т.д.).

Синтаксис: УстановитьЗначение(<Строка>,<Колонка>,<Знач>)
Синтаксис: ПолучитьЗначение(<Строка>,<Колонка>)

ТабЗнач.НоваяСтрока();
ТабЗнач.УстановитьЗначение(1,"Номер",100);
ТабЗнач.УстановитьЗначение(1,"Сотрудник","Иванов Иван Иванович");
ТабЗнач.УстановитьЗначение(1,3,10000); //обращение к 1-й строке и 3-й колонке ("Оклад")

Номер = ТабЗнач.ПолучитьЗначение(1,"Номер");
ФИО = ТабЗнач.ПолучитьЗначение(1,"Сотрудник");
Оклад = ТабЗнач.ПолучитьЗначение(1,3); //обращение к 1-й строке
              и 3-й колонке "Оклад"

Выгрузка таблицы значений

Синтаксис: Выгрузить(<Знач>,<НачСтрока>,<КонСтрока>,<Колонки>)

//выгрузить 10 сотрудников с наибольшими окладами в новую таблицу значений
ТабЗнач.Сортировать("Оклад-");
ТабЗнач.Выгрузить(НоваяТабЗнач,1,10,"Сотрудник,Оклад");


Запросы | Учебник по 1С | mista.ru

Запросы

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Запросы
Общая схема
Переменные в запросе
Группировка и сортировка
Двойная группировка
Функции в запросе
Условие отбора 		Поймал новый русский золотую рыбку и спрашивает:
- Чего тебе надобно, золотая рыбка?

Общая схема выполнения запроса
Запрос -- это обращение к системе 1С с просьбой выбрать определенные данные из базы данных. Например, с помощью запроса можно быстро организовать выбор всех сотрудников с определенной должностью. Для организации запроса необходимо выполнить следующие действия.

Запрос
              = СоздатьОбъект("Запрос");
ТекстЗапроса = "<текст запроса на особом языке запросов>"
Запрос.Выполнить(ТекстЗапроса);

//далее идет обработка результатов запроса

Переменные в запросе
С помощью переменных запроса происходит обращение к требуемым данным. Переменные запроса чаще всего ссылаются на справочники и документы. Кроме того можно ссылаться на журналы расчетов, регистры, бухгалтерские счета.

|ФИО = Справочник.Сотрудники.Наименование;
|Долж = Справочник.Сотрудники.Должность;
|ДатаПриема = Справочник.Сотрудники.ДатаПриема;
|ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;
|";

Группировка и сортировка
Практически в любом запросе есть ключевое слово Группировка. Оно означает, что нужно выбрать из таблицы только те записи, у которых значение определенного поля различается. Этот запрос выберет из справочника Сотрудники список используемых должностей и отсортирует этот список по алфавиту.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
КонецЦикла;

Двойная группировка
Этот запрос совершает очень полезную работу: он группирует всех сотрудников по должностям. Заметьте, что сначала идет группировка по должности, а затем по сотруднику, это очень важно. Обратите внимание на переменную запроса Сотр. Она ссылается на строку справочника Сотрудники. Чтобы вывести ФИО сотрудника используется обращение к атрибуту объекта: Сотр.Наименование.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|Группировка Сотр упорядочить по Сотр.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
............Пока Запрос.Группировка("Сотр")=1 Цикл
................Сообщить("......" + Запрос.Сотр.Наименование);
............КонецЦикла;
КонецЦикла;

Функции в запросе
Этот запрос совершает очень полезную работу: он подсчитывает, сколько сотрудников работает по каждой должности. Другие возможные функции приведены в Синтакс-помощнике.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|Функция Колво = Счётчик();
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
...Сообщить("По должности " + Строка(Запрос.Долж) +
.............." работает " + Строка(Запрос.Колво) + "
              чел.");
КонецЦикла;

Условие отбора
Часто требуется ограничить выборку только нужными значениями. Например, этот запрос выбирает всех сотрудников с определенной должностью.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|КодДолж = Справочник.Сотрудники.Должность.Код;
|Группировка Сотр упорядочить по Сотр.Наименование;
|Условие (КодДолж = 7);
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Сотр);
КонецЦикла;


Зарплата | Учебник по 1С | mista.ru

Зарплата

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Зарплата

Компонента Расчет в системе 1С:Предприятие предназначена для реализации сложных периодических расчетов. Обычно она используется для расчета зарплаты.

Журналы расчетов

Журнал расчетов предназначен для хранения данных сложных периодических расчетов, поддерживаемых компонентой «Расчет», и их предыстории. Основным свойством журнала расчетов является его принадлежность тому или иному справочнику системы. Такой справочник называется справочником объектов расчета. Фактически, справочник определяет вид объектов, по которым ведется расчет. Например, это может быть: журнал расчетов зарплаты, причем списком объектов расчета будет выступать справочник сотрудников; журнал расчетов дивидендов, тогда списком объектов расчета будет выступать справочник акционеров; журнал расчетов амортизации — списком объектов расчета будет выступать справочник основных средств. В процессе конфигурирования настраивается неограниченное число журналов расчета, каждый из которых будет решать ту или иную задачу предметной области.

Непременными атрибутами каждой записи журнала расчетов являются: объект, для которого данный расчет проведен (обычно сотрудник); вид расчета, по которому данный расчет проведен; дата начала и дата окончания действия данного расчета и результат расчета.

Для одного справочника могут быть созданы несколько журналов расчетов, каждый из которых будет содержать данные определенной предметной области. Например, в том случае, если предприятие — акционерное общество закрытого типа, справочник сотрудников может выступать списком объектов расчета для журнала расчетов заработной платы и для журнала расчетов дивидендов акционеров.

Виды расчета

Для описания алгоритмов, по которым выполняются те или иные вычисления, служит понятие виды расчетов. На этапе конфигурирования можно описать неограниченное количество видов расчетов. В отличие от справочников, журналов расчета и документов, за понятием «вид расчета» не лежит реальных данных — это не более чем алгоритм вычисления, оперирующий данными журналов расчета, документов и справочников.

Алгоритм вида расчета описывается с помощью встроенного языка. Типичными примерами видов расчетов являются «начисление по окладу», «подоходный налог».

Приоритет

Часто очень важным бывает очередность, в которой выполняются те или иные расчеты. Например, в случае расчета заработной платы, как минимум, важно сначала рассчитать начисления, а затем удержания.

Для организации последовательности выполнения расчетов служит понятие их приоритета. Этот параметр может принимать значение от 0 до 999 и действует следующим образом: чем меньше приоритет расчета, тем раньше он выполняется. Это отражается в последовательности расположения записей журнала расчетов — записи с видами расчетов меньшего приоритета располагаются перед записями с видами расчетов большего приоритета.

Вытесняющие расчеты

В некоторых случаях требуется автоматизировать предметные области, в которых расчет каких-либо величин может вестись взаимно исключающими способами. Возвращаясь вновь к задаче расчета заработной платы, рассмотрим пример расчета следующих начислений: оплата рабочих дней по окладу, оплата дней болезни по больничному листу и оплата дней отпуска.

Очевидно, что в этом случае выполняется условие взаимоисключения перечисленных видов расчета — нельзя, например, одновременно и болеть и работать, т. е. получать и оклад, и деньги по больничному листу. Такие расчеты взаимно исключают друг друга во времени и система должна гарантировать, что ввод одного из них приведет к исключению другого. (Как выяснилось из реальной жизни можно заболеть во время отпуска ;-)

Группы расчетов

Для того чтобы при тех или иных расчетах можно было оперировать не только результатами расчетов по конкретным видам, но и результатами по нескольким видам расчетов, объединенных по определенному принципу, служит понятие групп расчетов. Примерами групп расчета могут служить: «начисления, облагаемые подоходным налогом», «начисления, входящие в расчет средней зарплаты», «все удержания» и другие.

Правила перерасчета

«Правила перерасчета» являются вспомогательными объектами метаданных, предназначенными для автоматического отслеживания актуальности результатов проведенных расчетов при вводе новых записей журнала расчетов, удалении существующих или ручном исправлении результата расчета.

При создании правила перерасчета в Конфигураторе определяются виды расчетов, при редактировании которых правило перерасчета «срабатывает» (едущие виды расчета), и виды расчетов, которые должны быть перерассчитаны при срабатывании данного правила (зависимые виды расчета).

Например, для организации правильного перерасчета доплат к основным начислениям следует в качестве ведущих видов расчета указать оклад, тариф, сдельная оплата), а в качестве зависимых видов расчета следует указать доплаты к окладу, доплаты к тарифу и т.д.

Календари и Праздники

Для ведения рабочего графика предприятия или сторонних организаций, для учета рабочего времени сотрудников разных категорий в системе 1С:Предприятие служат календари. Примерами календарей могут служить: календарь рабочего графика предприятия (где отмечены выходные и рабочие дни); календарь работы банка, через который осуществляются взаиморасчеты; календарь работы служащих; календарь, в котором проставлена продолжительность рабочих дней для рабочих.

Календарь представляет собой объект, который устанавливает для каждой календарной даты некоторое числовое значение, которое может интерпретироваться при работе программы тем или иным образом. Например, в календаре, представляющем собой график работы организации или предприятия, каждому рабочему дню может соответствовать единица, а каждому выходному — ноль. В календаре учета рабочего времени сотрудников предприятия каждой дате календаря может соответствовать число — продолжительность рабочего дня в часах и т. д.

Праздники. Допустим, что у вас на предприятии несколько категорий работников, например 5 категорий, и для каждой категории заведен свой календарь. Представьте, что в стране объявлен всеобщий праздник, например, "День 1С". Используя данную функцию вы можете один раз завести этот праздник, и он автоматически отразится во всех календарях, у которых стоит флажок "Учитывать праздники". Красота!


Календари | Учебник по 1С | mista.ru

Календари

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Зарплата / Календари

Ссылка на календарь
 Подсчет дней и часов
 Отсчет даты

Ссылка на календарь

1-й вариант:

Календ = СоздатьОбъект("Календарь.Служащие");

2-й вариант:

Календ = Календари.Служащие;

Подсчет дней и часов по календарю

Подсчитаем количество рабочих дней для служащих за заданный период с учетом выходных и праздников:
Дни = Календари.Служащие.Дней (НачДата, КонДата);

Подсчитаем количество часов для рабочих за заданный период с учетом выходных, праздников и укороченных предпраздничных дней:
Часы = Календари.Рабочие.Часов (НачДата, КонДата);

Календари, казалось бы простой объект, но без них отсчитывать дни было бы неимоверно тяжело. Наверное, программисты в других программах мучаются без календарей. Пожелаем им приятных кошмаров. ;-)

Отсчет даты

Получим дату, отстоящую по календарю от указанной даты на заданное количество дней. Календарь пропускает дни с нулевыми значениями (выходные и праздники).

КонецОтпуска = Календари.Служащие.ПолучитьДату (НачалоОтпуска, 28);


Журналы расчетов | Учебник по 1С | mista.ru

Журналы расчетов

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Зарплата / Журналы расчетов

Ссылка на журнал расчетов
 Ввод записей
 Перебор записей
Удаление записей
Период журнала

Ссылка на журнал расчетов

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

Ввод записей в журнал расчетов

Записи в журнал расчетов обычно вводятся при проведении документов.

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ЖЗ.УстановитьРеквизит("Рассчитана",1);
ЖЗ.ВвестиРасчет(ВыбрСотрудник, ВидРасчета.Премия, НачалоМесяца, КонецМесяца, ПремияСотруднику);

или

ЖЗ.ЗаписатьРасчет(ВыбрСотрудник, ВидРасчета.Премия, НачалоМесяца, КонецМесяца, ПремияСотруднику);

Отличие метода ЗаписатьРасчет заключается в том, что ввод вытесняющих расчетов приводит к вытеснению только тех расчетов, которые имеют меньший приоритет, а не меньший либо равный, как в случае с методом ВвестиРасчет. Это приводит, в частности, к тому, что за счет применения этого метода расчет не вытесняет «сам себя».

При записи невытесняющего расчета ввод новых записей также происходит «осмотрительно» — новые записи вводятся только в том случае, если в журнале расчетов нет точно такой же записи. Под точно такой же записью здесь подразумевается запись с таким же видом расчета, для того же объекта и с тем же периодом действия.

Перебор записей журнала расчетов

Например, организуем перебор записей с периодом действия в январе.

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ДатаКон = '31.01.2002';
ЖЗ.ВыбратьЗаписи(ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
......<действия с тек. записью>
КонецЦикла;

А теперь организуем перебор записей, введенных в январе.

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ЖЗ. ВыбратьПериод(ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
.......<действия с тек. записью>
КонецЦикла;

Отличие методов ВыбратьЗаписи и ВыбратьПериод проявляется, если запись введена в другом месяце, но период ее действия лежит в январе. Например, в феврале сотруднику выдают премию за январь. Тогда запись будет введена в феврале (период регистрации), но период ее действия - январь. В первый цикл она попадет, а во второй нет.

Посчитаем все начисления текущего сотрудника за январь:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
....Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
..........ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
....КонецЕсли;
КонецЦикла;

Теперь рассчитаем все записи текущего сотрудника, введеные в текущем месяце:
ЖЗ.ВыбратьПериодПоОбъекту (ТекСотр, ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
........ЖЗ.Рассчитать();
КонецЦикла;

Рассчитаем все записи по документу, независимо от того, в каком расчетном периоде записи порождались:

ЖЗ.ВыбратьЗаписиПоДокументу (ВыбрДокумент);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
......ЖЗ.Рассчитать();
КонецЦикла;

Рассчитаем все записи по указанному подразделению. В журнале расчетов указана графа отбора "Подразделение".

ТекПер = ЖЗ.ТекущийПериод();
ЖЗ.ВыбратьПоЗначению ("Подразделение",ВыбрПодразделение, ТекПер, ТекПер);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
......ЖЗ.Рассчитать();
КонецЦикла;

Удаление записей в журнале расчетов

При отмене проведения документа обычно автоматически удаляются всего его движения, в том числе и введенные записи в журналы расчетов.

Можно также явно удалять записи методом журнала расчетов УдалитьЗапись().

Методы работы с периодом журнала расчетов

 НачалоПериода
              = ЖЗ.НачалоТекущегоПериода();
КонецПериода = ЖЗ.КонецТекущегоПериода();
ПериодСтрокой = ЖЗ.ОписательПериода(НачМес); //например "Январь
              2002 г"


Виды и группы расчета | Учебник по 1С | mista.ru

Виды и группы расчета

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
 Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
 Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
 Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Скачать

Учебник (html) 1.3М
 Учебник (chm)
Версия для печати
Версия без картинок
Приложения

Курс лекций
Статьи
Программы
Ссылки

Информационные технологии

Интересное

mista.ru / 1С:Предприятие / Учебник / Зарплата / Виды и группы расчета

Ссылка на вид расчета
 Вхождение в группу
 Перебор видов расчета в группе
 Перебор всех видов расчета
 Перебор всех групп расчета

Ссылка на вид расчета

1-й вариант:

ВР = ВидРасчета.НаРуки;
ВР = ВидРасчета.Премия;

2-й вариант:

ВР = ВидРасчета.ПолучитьАтрибут("НаРуки");

Пример, определим сумму "по окладу" текущего сотрудника:

ПоОкладу = 0;
ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ДатаНач = '01.01.2002';
ЖЗ. ВыбратьПериодПоОбъекту(ТекСотр, ДатаНач);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
....Если ЖЗ.ВидРасч = ВидРасчета.ПоОкладу Тогда
.........ПоОкладу = ПоОкладу + ЖЗ.Результат;
....КонецЕсли;
КонецЦикла;

Вхождение вида расчета в группу

Посчитаем все начисления текущего сотрудника за январь:
1-й вариант:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
....Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
..........ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
....КонецЕсли;
КонецЦикла;

2-й вариант:
ВсегоНачислено = 0;
ЖЗ.ВыбратьЗаписиПоОбъекту (ТекСотр, ДатаНач, ДатаКон);
Пока ЖЗ.ПолучитьЗапись()=1 Цикл
....Если ГруппаРасчетов.ВсеНачисления.СодержитВидРасчета(ЖЗ.ВидРасч)=1 Тогда
..........ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;
....КонецЕсли;
КонецЦикла;

Перебор видов расчета, входящих в группу

Для Ном=1 По
              ГруппаРасчетов.ВсеНачисления.Количество() Цикл
....ВР = ГруппаРасчетов.ВсеНачисления.ПолучитьРасчет(Ном);
....Сообщить(ВР.Код);
КонецЦикла;

Перебор всех видов расчета

Для Ном=1 По
              Метаданные.ВидРасчета() Цикл
....кфгВР = Метаданные.ВидРасчета(Ном);
....ВР = ВидРасчета.ПолучитьАтрибут(кфгВР.Идентификатор);
КонецЦикла;

Перебор групп расчета

Для Ном=1 По Метаданные.ГруппаРасчета() Цикл
....кфгГруппаРасч = Метаданные.ГруппаРасчета(Ном);
....//недоработка фирмы 1С. По имени группы расчета нельзя получить саму группу расчета как объект.
....//если помечтать, то можно было бы сделать вот так:
....// ГруппаРасч = ГруппаРасчета.ПолучитьАтрибут(кфгГруппаРасч.Идентификатор);
КонецЦикла;

Еще я совсем не понимаю, почему группа расчетов не является типообразующим объектом в 1С. Т.е. нельзя, например, завести реквизит справочника и указать его тип "ГруппаРасчетов.ВсеНачисления". Нельзя в диалоге поместить поле типа "ГруппаРасчета", чтобы пользователь мог самостоятельно выбрать группу расчетов так же, как он выбирает вид расчета. Будем надеяться, что в версии 8.0 фирма 1С исправит эти упущения.